【发布时间】:2011-11-16 14:54:34
【问题描述】:
我正在尝试研究如何使用 Java 复制不断增长的文件。我想工作的一个例子如下:
- 从 HTTP 服务器下载文件。
- 我在文件下载完成之前启动了文件复制
- 复制开始,直到文件完全下载并复制所有内容后才结束
我使用了以下代码:
InputStream is = new FileInputStream(sourceFile);
OutputStream os = new FileOutputStream(targetFile);
byte[] buf = new byte[8192];
int num;
while ((num = is.read(buf)) != -1) {
os.write(buf, 0, num);
}
但这只会复制迄今为止下载的内容,所以我最终得到了一个损坏的目标文件。
我也使用 BufferedInputStream 和 BufferedOutputStream 进行了测试,但也没有用。
有什么方法可以实现我想要的吗?
谢谢
【问题讨论】:
-
下载完成后是否收到通知?
-
不,在用户开始复制之前,系统可能完全不知道该文件。目前不支持增长文件,但我想添加对它的支持。
-
在文件上传完成之前开始复制是否重要?