我是根据一位网友的提供的“JAVA实现FTP上传下载”的代码基础上改的,原出处找不到了,无法提供原帖,请原作者见谅。
本地不生成文件,直接通过网络数据流,在对端FTP服务器上直接生成文件。仅供参考。
import java.io.*;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
public class FTPload {
String localfilename;
String remotefilename;
FtpClient ftpClient;
/**
* 创建FTP连接
* @param ipiP地址
* @param port端口
* @param user用户名
* @param password密码
* @param path连接才初始地址
*/
public void connectServer(String ip, int port, String user,
String password, String path) {
try {
ftpClient = new FtpClient();
ftpClient.openServer(ip, port);
ftpClient.login(user, password);
if (path.length() != 0)
ftpClient.cd(path);
ftpClient.binary();
} catch (IOException ex) {
System.out.println(ex);
}
}
/**
* 关闭FTP连接
*/
public void closeConnect() {
try {
ftpClient.closeServer();
} catch (IOException ex) {
ex.printStackTrace();
}
}
/**
* 生成文件
* @param filename 文件名
* @param source 文件内容
*/
public void creatFileOnFTP(String filename,String[] source) {
try {
TelnetOutputStream os = ftpClient.put(filename);
for (int i = 0; i < source.length; i++) {
String tmp = source[i];
os.write(tmp.getBytes());
}
os.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
public static void main(String agrs[]) {
FTPload fu = new FTPload();
fu.connectServer("127.0.0.1", 21, "username", "password",
"C:/");
String[] str = { "123\n", "abc\n", "It's test success!" };
fu.creatFileOnFTP("test.tmp.txt",str);
fu.closeConnect();
}
}