我正在使用org.apache.commons.net.ftp.FTPClient.retriveFile(String,OutputStream)
将文件从FTP下载到Windows机器。当我下载一个文本文件时,它的格式丢失了。当我在记事本中打开下载的文件时,它看起来不像原始文件。请在附加的屏幕截图中找到差异。请找到我的下面的代码,请任何人让我知道相同的解决方案。
FileOutputStream fos = new FileOutputStream(tempPath+File.separator+files[i].getName());
this.ftpClient.retrieveFile(files[i].getName(), fos);
fos.close();
答案 0 :(得分:0)
文件尚未更改,传输协议(如ftp 永远不会)确实会更改文件本身的内容。他们最多修改一些标题信息。
您最有可能观察到的是文件中包含的空格的不同可视化结果。例如,可以使用不同数量的空间来可视化制表符,从而导致不同的缩进。
这种情况也可能是不同线宽的结果:显然,您的第一个屏幕截图只显示以一定长度包裹的线条。缺少换行符也是不同系统编码换行符的不同方式的典型结果。 MS-Windows使用与其他系统不同的行编码(不符合目的)。尝试使用具有智能换行处理功能的编辑器。或者您可以以明确的方式选择换行符。
所以这个问题不是一个ftp问题,它(很可能)与你在两台机器上使用的不同软件或设置有关。
答案 1 :(得分:0)
不知道出了什么问题,我从未将文件直接保存到磁盘,但看起来它会生成一行而你的自动换行器会再次破坏它。
您可以尝试逐行读取文件,然后将其写入光盘。你用的是什么语言?我可以给你一个C#解决方案。
string [] text;
使用(StreamReader sr = new StreamReader(“LoadFile.txt”))
{ string line; while ((line = sr.ReadLine()) != null) { text += line + "\n"; } }
使用(StreamWriter sw = new StreamWriter(“WriteFile.txt”))
{ foreach (string line in text) { sw.WriteLine(line); } }
这至少可以确保要加载的文件中的每一行都在您编写的文件中获得自己的行。