为了重用所有IO而创建的FileUtils类。 我们将文件(随机数量)从一个Unix服务器传输到另一个Unix服务器。
我的问题: 随机地,一个文件将作为0kb文件传出,但没有例外,并表示它已成功传输。
我们使用的基本方法:
resultCode = 0;
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(fileLocation + orginalFile);
fos = new FileOutputStream(toFolder + destinationFile);
byte[] buf = new byte[1024];
int i = 0;
while ((i = fis.read(buf)) != -1) {
fos.write(buf, 0, i);
}
resultCode = 1;
} catch (Exception e) {
resultCode = 2;
//our logging
} finally {
try {
fis.close();
fos.close();
} catch (Exception e) {
//our logging
}
}
return resultCode;
}
关于可能导致这种情况的任何想法?每次为单个文件传输调用FileUtils类。
谢谢
答案 0 :(得分:1)
在关闭fos.flush()
之前刷新文件输出流,我不确定它会解决您的问题,但值得一试:
public void flush()抛出IOException
刷新此输出流并强制执行任何缓冲的输出字节 写出来。冲洗的一般合同是称之为 指示,如果先前写入的任何字节已被缓冲 输出流的实现,这样的字节应该立即 写到他们预定的目的地。