java生成xml文件上传ftp
时间: 2025-02-17 15:08:08 浏览: 16
使用Java创建XML文件并通过FTP上传
创建XML文件
为了创建一个简单的XML文件,在Java中可以利用javax.xml.parsers.DocumentBuilderFactory
来构建DOM树,再通过TransformerFactory
将这个文档转换成字符串形式保存到本地磁盘。
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class CreateXmlFile {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.newDocument();
Element rootElement = doc.createElement("library");
doc.appendChild(rootElement);
Element book = doc.createElement("book");
rootElement.appendChild(book);
book.setAttribute("id", "1");
Element title = doc.createElement("title");
title.appendChild(doc.createTextNode("Effective Java"));
book.appendChild(title);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("output.xml"));
transformer.transform(source, result);
}
}
这段代码会生成名为output.xml
的文件[^4]。
FTP上传过程
对于FTP操作部分,则推荐使用Apache Commons Net库来进行处理。此库提供了丰富的API用于支持多种网络协议,包括但不限于FTP、SMTP等。下面是一个基于该库实现的简单例子:
首先需要添加Maven依赖项:
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.8.0</version>
</dependency>
接着编写上传逻辑:
import org.apache.commons.net.ftp.FTPClient;
import java.io.FileInputStream;
import java.io.IOException;
public class FtpUploadExample {
private static final String SERVER = "your.server.com";
private static final int PORT = 21;
private static final String USER = "username";
private static final String PASS = "password";
public static boolean uploadFile() {
FTPClient ftpClient = new FTPClient();
try (FileInputStream fis = new FileInputStream("output.xml")) {
ftpClient.connect(SERVER, PORT);
showServerReply(ftpClient); // 显示服务器响应信息
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Connect failed");
return false;
}
boolean loginSuccess = ftpClient.login(USER, PASS);
if (!loginSuccess){
System.out.println("Login failed.");
return false;
}else{
showServerReply(ftpClient);
}
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
String remoteFilePath = "/path/to/remote/output.xml";
boolean done = ftpClient.storeFile(remoteFilePath , fis);
if (done) {
System.out.println("The file was uploaded successfully.");
}
ftpClient.logout();
ftpClient.disconnect();
return true;
} catch (IOException ex) {
ex.printStackTrace();
return false;
}
}
private static void showServerReply(FTPClient ftpClient) {
String[] replies = ftpClient.getReplyStrings();
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
}
上述程序实现了连接指定地址的FTP服务端,并尝试登录验证身份合法性;成功之后设置传输模式为二进制方式以确保文件完整性不受影响;最后执行实际的数据上载动作[^5]。
相关推荐


















