问题: 项目中有个功能模块是需要用到FTP协议传输文件,但发现传输成功的文件比原文件大的情况。
首先我先修改了传输的代码,部分源代码如下:
byte[] buffer = new byte[1024];
while (inputStream.read(buffer) != -1) {
out.write(buffer);
......
修改后的代码,部分源代码如下:
byte[] buffer = new byte[1024];
int numberRead = 0;
while ((numberRead = inputStream.read(buffer)) != -1) {
out.write(buffer,0,numberRead);
out.flush();
......
经过以上代码的修改后,其他协议的传输文件大小不一致的问题得到了解决,但是FTP协议传输仍然存在问题,查了很久发现是编码的原因,问题出在FTP传输模式
FTP的传输方式
FTP的传输有两种方式: ASCII传输模式和二进制数据传输模式。
**1.ASCII传输方式:**假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX