我真的很忙碌。JAVA 6和使用Apache FTPClient 3.1和FTP上传后损坏的文件.BINARY_FILE_TYPE
我正在编写一个使用commons-net-3.1.jar库将一堆文件同时上传到另一堆服务器的小型Java(必须是SDK 6)工具。我将主要使用.jpg图像。我设置连接到BINARY_FILE_TYPE之前有人问:) :)
当我尝试运行它,一切顺利,但有时,上传图像后,他们有“小行”,就像如果文件已损坏它的方式。
这段小小的代码是完成所有工作的人。当os.write失败时,我应该如何管理第一次捕获的任何线索,以保持文件上传正确?
try {
InputStream is = new FileInputStream(rutaFichero);
OutputStream os = ftp.storeFileStream(nombreFichero);
byte buf[] = new byte[8192];
bytesRead = is.read(buf);
while ((bytesRead = is.read(buf)) != -1) {
try {
os.write(buf, 0, bytesRead);
} catch (IOException ioe) {
} catch (NullPointerException npe) {
}
}
is.close();
try {
os.close();
completado = ftp.completePendingCommand();
if (completado) {
} catch (NullPointerException npe) {}
}
出于好奇,我想这可能是上线只是坏的条件,所以我选中的文件的大小transfering了一些日子后......他们都不匹配! WTF!?
我错误地输入了该行,不在我的代码中,但感谢您指出它。我更改为IOUtils.copy()并且生活更容易,但是,问题一直没有解决,直到其他人向我发送了一封电子邮件,告诉我有关确定将模式类型设置为二进制后的建议登录,从来没有和...嘿,嘿,它的工作! 非常感谢您的帮助Tomasz。 恩......如何设置此问题解决? – gobispo
@gobispo:因为我的回答并没有真正帮助你,所以我建议你将你的评论改为另一个答案,并自我接受。祝你好运! –
现在我明白了。我真的很陌生,不知道该怎么做。再次感谢Tomasz和你的回答,尽管不是我期望的方式,确实帮助我找到了一种更简单的方式来做事情:) – gobispo