生成xml报文方法并输出
创建根节点
Element root= new Element("root");
//创建报文体
Element body = new Element("body");
//添加子节点并赋值
body.addContent(new Element("SEQ_NO").setText(""));
//获取已存在的节点并赋值(只能一层一层的获取)
body.getChild("SEQ_NO").getChild("SEQ_NO2").setText(""));;
//获取已存在的节点的值
String str=Message_Body.getChildText("EP_DEC_HEAD");
//根节点(报文)添加到文档中;
Document Doc = new Document(root);
//自定义报文名字
String FileName = "EMVS_EP_3120980024_"+hm.get("CONTR_NO")+"_"+BIZ_TYPE+"0_"+nowTime+".DEC";
//输出报文到项目WebRoot目录
Format format = Format.getPrettyFormat();
XMLOutputter XMLOut = new XMLOutputter(format);
//XMLOut..setEncoding("utf-8");Doc.setXMLEncoding("gb2312");
//获得WebRoot路径
// ServletConfig servletConfig=(ServletConfig).getServletContext().getAttribute("servletConfig");
String webRootPath=request.getSession().getServletContext().getRealPath("/");
String uploadPath="download\\dadan\\";
//uploadPath附加传入的路径,组成一个上传的完整路径
uploadPath=webRootPath+uploadPath;
XMLOut.output(Doc, new FileOutputStream(uploadPath+fileName));
//利用ftp发送文件到指定文件夹
File file = new File(uploadPath+fileName);
FTPFunc fTPFunc = new FTPFunc();
fTPFunc.connect("send");
fTPFunc.upload(file);
ftp连接,上传,下载工具类
package com.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import seastar.servlet.demand.Utils;
@SuppressWarnings("all")
public class FTPFunc {
private static FTPClient ftp;
/**
* 使用默认服务器和端口进行连接
* @param path 上传到ftp服务器哪个路径下
* @return
* @throws Exception
*/
public boolean connect(String path) throws Exception {
boolean result = false;
ftp = new FTPClient();
int reply;
String ftp_address = Utils.getProperty("ftp_address");
int ftp_port = Integer.parseInt(Utils.getProperty("ftp_port"));
String ftp_username = Utils.getProperty("ftp_username");
String ftp_password = Utils.getProperty("ftp_password");
ftp.connect(ftp_address,ftp_port); //测试环境FTP
ftp.login(ftp_username,ftp_password); //测试环境用户名密码
/*ftp.connect("10.10.123.**",21); //测试FTP地址
ftp.login("test","aaa@2468"); //测试FTP用户名密码
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(path);
result = true;
return result;
}
/**
*
* @param path 上传到ftp服务器哪个路径下
* @param addr 服务器的IP地址
* @param port 端口号
* @param username 用户名
* @param password 密码
* @return
* @throws Exception
*/
public boolean connect(String path,String addr,int port,String username,String password) throws Exception {
boolean result = false;
ftp = new FTPClient();
int reply;
ftp.connect(addr,port);
ftp.login(username,password);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(path);
result = true;
return result;
}
/**
*
* @param file 上传的文件或文件夹
* @throws Exception
*/
public void upload(File file) throws Exception{
if(file.isDirectory()){
ftp.makeDirectory(file.getName());
ftp.changeWorkingDirectory(file.getName());
String[] files = file.list();
for (int i = 0; i < files.length; i++) {
File file1 = new File(file.getPath()+"\\"+files[i] );
if(file1.isDirectory()){
upload(file1);
ftp.changeToParentDirectory();
}else{
File file2 = new File(file.getPath()+"\\"+files[i]);
FileInputStream input = new FileInputStream(file2);
ftp.storeFile(file2.getName(), input);
input.close();
}
}
}else{
File file2 = new File(file.getPath());
FileInputStream input = new FileInputStream(file2);
String aString = file2.getName();
ftp.storeFile(aString, input);
input.close();
}
}
/**
* 上传单个文件
* @param file 需要上传的文件
* @param changeFileName 是否需要变更文件的名称
* @return 返回FTP上文件的名称
* @throws Exception
*/
public String upload(File file, boolean changeFileName) throws Exception{
if(file.isFile()){
File file2 = new File(file.getPath());
FileInputStream input = new FileInputStream(file2);
String saveFileName = file2.getName();
if(changeFileName)
{
//找到文件的扩展名
int ipos = saveFileName.indexOf(".");
String strExtName = saveFileName.substring(ipos,saveFileName.length());
//用新的文件名保存上传的文件
saveFileName = PBMeth.getTimeString()+strExtName;
ftp.storeFile(saveFileName, input);
}
else //否则用原有的文件名长传文件
{
if(file.exists()) //如果文件存在就返回2
{
return "1";
}
ftp.storeFile(saveFileName, input);
}
input.close();
return saveFileName;
}
else
{
return "0";
}
}
/**
*
* <p>删除ftp上的文件</p>
* @param srcFname
* @return true || false
*/
public boolean removeFile(String srcFname){
boolean flag = false;
if(ftp != null)
{
try
{
flag = ftp.deleteFile(srcFname);
}
catch (IOException e)
{
e.printStackTrace();
}
}
return flag;
}
/**
* 连接到FTP的方法
* @param addr 服务器的IP地址
* @param port 端口号
* @param username 用户名
* @param password 密码
* @param path FTP的目录
* @return
* @throws Exception
*/
public boolean getConnectionFTP(String addr,int port,String username,String password,String path,FTPClient ftp) throws Exception {
boolean result = false;
int reply;
try {
ftp.connect(addr,port);
ftp.login(username,password);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(path);
result = true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
return result;
}
//获得文件列表
public ArrayList<String> getFTPFileList(FTPClient ftp) {
ArrayList<String> fileNameList = new ArrayList<String>();
try {
FTPFile[] fs = ftp.listFiles();//获得文件列表
for (FTPFile file : fs) {
fileNameList.add(file.getName());//获得文件名称组成的list
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
return fileNameList;
}
//是否成下载FTP文件到本地
public Boolean downloadFromFTP(String localPath,String fileName,FTPClient ftp) {
try {
File localFile = new File(localPath+fileName);
OutputStream is = new FileOutputStream(localFile);
ftp.retrieveFile(fileName, is);//循环取得文件并写到指定本地路径
is.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
//删除指定名称的FTP上的文件
public Boolean deleteFromFTP(String path,String fileName,FTPClient ftp) {
boolean result = true;
try {
result = ftp.deleteFile(path+fileName);//删除FTP上的文件
} catch (Exception e) {
e.printStackTrace();
return false;
}
return result;
}
public void doConnectAndUpload(String string, File file) throws Exception{
FTPClient ftp1 = new FTPClient();
int reply;
ftp1.connect("120.55.192.123",21);
ftp1.login("administrator","Regs@2016");
/*ftp1.connect("61.152.176.30",21);
ftp1.login("EMVSXZGJ","EMVS123");*/
ftp1.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp1.enterLocalPassiveMode();
reply = ftp1.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp1.disconnect();
return;
}
//ftp1.changeWorkingDirectory(string);
File file2 = new File(file.getPath());
FileInputStream input = new FileInputStream(file2);
String aString = file2.getName();
//ftp1.setControlEncoding("UTF-8");
boolean aa = ftp1.storeFile(new String(aString.getBytes("UTF-8"),"iso-8859-1"),input);//iso-8859-1
System.out.println(aa);
boolean a = ftp1.storeFile(aString, input);
System.out.println(a);
input.close();
ftp1.logout();
}
}