JAVA在FTP服务器上直接生成文本文件
不需要在本地生成文件,再上传到ftp
(JDK1.8和1.6之前有差异)
该版本适用于JDK1.8
package com.dapsoft.loadfile.test;
import sun.net.ftp.FtpClient;
import sun.net.ftp.FtpProtocolException;
import java.io.IOException;
import java.io.OutputStream;
public class ftpLoad {
FtpClient ftpClient;
/**
* 创建FTP连接
* @param ip iP地址
* @param port 端口
* @param user 用户名
* @param password 密码
* @param path ftp存放文件的递地址
*/
public void connectServer(String ip, int port, String user, String password, String path) {
try {
ftpClient = FtpClient.create(ip);
ftpClient.login(user, password.toCharArray());
if (path.length() != 0) {
ftpClient.changeDirectory(path);
// 用2进制上传、下载
ftpClient.setBinaryType();
}
} catch (FtpProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 关闭FTP连接
*/
public void closeConnect() {
try {
ftpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 生成文件
* @param filename 文件名
* @param source 文件内容
*/
public void creatFileFTP(String filename,String[] source) {
try {
OutputStream os = ftpClient.putFileStream(filename, true);
for (int i = 0; i < source.length; i++) {
String tmp = source[i];
os.write(tmp.getBytes());
// 换行
os.write("r\n".getBytes());
}
os.close();
} catch (FtpProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
// 测试 2022.05.18
public static void main(String agrs[]) {
ftpLoad ftp = new ftpLoad();
ftp.connectServer("127.0.0.1", 21, "admin123", "123456", "/cc");
String[] str = { "2022\r\n", "0518\r\n", "test success\r\n"};
ftp.creatFileFTP("test2022.txt",str);
ftp.closeConnect();
}
}