连接ftp 服务器
在服务器上生成单个文件 是可以的
但是怎么把几个服务器上的文件 生成一个zip 放在服务器上
//获取服务器上我指定的几个文件的名字
List<String> fileList = getSubFile(filePath, createTime, serviceCode);
ftp.setFileType(ftp.BINARY_FILE_TYPE);
//到这里就蒙了 这个zipName 是我的压缩文件名称 但是自动生成在我的e盘了
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipName));
for (int i = 0; i < fileList.size(); i++) {
String fileName = fileList.get(i);
logger.info("压缩到的文件名:" + fileName);
InputStream in = ftp.retrieveFileStream(fileName);
doCompress(in, fileName, zos);
// 手动关闭 再调用completePendingCommand
in.close();
ftp.completePendingCommand();
}
//走到这里 就在E盘生成我的压缩包了 但是不是我要的 我想在ftp上生成
//我又写了下面这个 然后生成到服务器上了 但是总感觉是不对的 求知道的人告诉我的错误
//ftp.storeFile(zipName, new FileInputStream(new File(zipName)));
zos.close();
首先,你要知道ftp连接模式下支持的命令和相应的功能有哪些,如果ftp连接不能调用远程服务器的zip压缩命令,那你的需求是无法实现的,如果可以切换成其他的ssh连接去执行命令进行
个人就这一刻想到两个做法,一个是没台服务器上面都具备ftp工呢,每次从每条服务器上面用ftp取到你想出来的数据到本地服务器,打包,搞定
另一个是把每一台服务器对应的文件夹mount到本服务器上,这样可以在本服务器之间用流读取到。再或者,写一个分布式的数据流处理程序,部署在每一台服务器上面,这样可以实现每一台服务器之间的数据流共享
可能是我没说清楚,现在就是有一台ftp的服务器,我会把我本地得到的数据放到txt文本里,放在ftp服务器上。这个直接用ftp.storeFile('文件名称',文件流) 就可以
,不需要提前在我本地生成。现在我想要直接对这几个txt打包成一个zip 放在ftp上,就是在ftp服务器上操作了,我查了好多ftp打包命令 可能是我写的不对都不行,
最后我还是把他们先放到压缩包里,压缩包生成在本地 ,然后在读流上传到ftp服务器上了。
ftp这个传输协议 应该是只做文件传输就好了 让他做别的不知道可不可以 只是目前我没找到 要学习还是很多吧
楼主现在会写了吗,请教下