Java 从Linux FTP 下载文件 (怪异问题)

李岩飞 发布于 2013/04/25 11:42
阅读 3K+
收藏 1

用Apache的FTP下载的文件都是出现字节错误,导致无法解压。 

而用sun的FTP下载文件正确可是每个文件都要连接一次,且不能关闭连接,一关闭就死那不动了 


FtpClient client = null;
			try {
				client = new FtpClient();
				client.openServer(host, port);
				client.login(user, pass);
				client.cd(path);
				System.out.println("开始现在数据....");
				String[] files = new EricssionFtpDownload().listFileName(client, gatherName);
				for (String f : files) {
					client = new FtpClient();//这里必须重新创建,否则就卡着这里不动了
					client.openServer(host, port);
					client.login(user, pass);
					client.cd(path);
					client.binary();
					InputStream in = client.get(f);
					FileOutputStream fos = new FileOutputStream(savePath + "/" + date + "/" + f);
					IOUtils.copyStream(in, fos);
					IOUtils.closeIO(fos);
				}
				client.closeServer();
				System.out.println("结束现在数据....");
			} catch (IOException e1) {
				e1.printStackTrace();
			}


不知哪位大侠遇到过这类问题吗


在linux里面有个问题,就是路径会改变。

登入的账号路径是/home/xitong

而要下载目录却在/var/opt里面

这样会有什么影响吗。

加载中
0
李岩飞
李岩飞

怎么,大家都没有遇到过这样的情况吗。

还是没有linux 里 ftp下载过

0
麦麸子lee
麦麸子lee

没搞懂你说的意思

登入的账号路径是/home/xitong

而要下载目录却在/var/opt里面

这样会有什么影响吗。

这有什么影响呢?

0
李岩飞
李岩飞

引用来自“南宫傲”的答案

没搞懂你说的意思

登入的账号路径是/home/xitong

而要下载目录却在/var/opt里面

这样会有什么影响吗。

这有什么影响呢?

因为ftp在linux上面。ftp账号登进去后看到文件都是在/home/xitong路径下面。

而我要下载的文件在/var/opt路径下面


麦麸子lee
麦麸子lee
只要你有对/var/opt下面目录的读取权限,没问题的吧
0
loyal
loyal
下载下来的文件有大小么?还是大小为0?
0
loyal
loyal
你下载的文件的路径,和下载后下载的路径  权限都有么?...没有的话还玩毛线啊...
0
李岩飞
李岩飞

引用来自“loyal”的答案

下载下来的文件有大小么?还是大小为0?

有的,多了一些字节。

用sun ftp 是可以下载的,但是每次都有创建一个连接。但是我连window ftp下载,只需一个连接就可以了。

0
平安北京

连接模式不对吧,正常是没有问题的

// 用2进制上传、下载
		ftpClient.setBufferSize(1024);
		ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
		ftpClient.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE);
		ftpClient.setControlEncoding("UTF-8");
		ftpClient.enterLocalPassiveMode();

0
李岩飞
李岩飞

引用来自“冷泉”的答案

连接模式不对吧,正常是没有问题的

// 用2进制上传、下载
		ftpClient.setBufferSize(1024);
		ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
		ftpClient.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE);
		ftpClient.setControlEncoding("UTF-8");
		ftpClient.enterLocalPassiveMode();

window上的ftp是没有问题的。

就是linux上ftp下载文件有问题。所有特别郁闷

0
平安北京

引用来自“eliyanfei”的答案

引用来自“冷泉”的答案

连接模式不对吧,正常是没有问题的

// 用2进制上传、下载
		ftpClient.setBufferSize(1024);
		ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
		ftpClient.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE);
		ftpClient.setControlEncoding("UTF-8");
		ftpClient.enterLocalPassiveMode();

window上的ftp是没有问题的。

就是linux上ftp下载文件有问题。所有特别郁闷

什么服务端,我这就是全是运行在linux上的,vsftp,程序也是运行在linux下的,不要用sun的api了,过时了
0
李岩飞
李岩飞

引用来自“冷泉”的答案

引用来自“eliyanfei”的答案

引用来自“冷泉”的答案

连接模式不对吧,正常是没有问题的

// 用2进制上传、下载
		ftpClient.setBufferSize(1024);
		ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
		ftpClient.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE);
		ftpClient.setControlEncoding("UTF-8");
		ftpClient.enterLocalPassiveMode();

window上的ftp是没有问题的。

就是linux上ftp下载文件有问题。所有特别郁闷

什么服务端,我这就是全是运行在linux上的,vsftp,程序也是运行在linux下的,不要用sun的api了,过时了
什么型号我不知道,别人只开放了ftp,其他不太清楚。sun的ftp至少可以正确下载。apache的下载的文件都不正确。特别无奈
返回顶部
顶部