我正在使用代码将内容从 url 写入文件。这是代码
public void copyFileFromUrl(URL source, File target) throws IOException {
try {
if (!target.exists()) {
target.createNewFile();
log.debug("target file created for " + target);
log.debug("downloading source ....");
InputStream in = source.openStream();
OutputStream out = new FileOutputStream(target);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
} else {
log.debug("skipping creation of asset");
}
} catch (Exception e) {
log.debug("trouble with " + target);
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
in.close();
out.close();
}
}
现在发生了什么,假设文件大小为 40kb,现在在写入过程中,如果我有连接重置或任何类型的异常,那么所有内容都没有完全写入,或者有时什么都没有写入,我有一个大小为 0 或更小的文件比网址上的原始文件。
我想问有没有什么方法可以保证整个文件完全是从 url 写入的,如果在写入过程中出现任何异常,那么我会尝试三次写入,第三次尝试后我会记录文件不是的消息写的完整吗?
谢谢