JDK 递归 文件复制 最后文件的大小怎么都变成零了

发布于 2021-11-14 22:16:20 字数 1779 浏览 857 评论 3

今天准备把一些不同文件夹下的教学视频集合到一个文件夹下,一个个动手拉太慢了,就想说用java写一个直接递归复制得了。

利用以下代码可以实现一个文件的复制,复制完成后正常:

public static void moveFile(File host, File target) throws IOException {
		BufferedInputStream bis = null;
		BufferedOutputStream bos = null;

		try {
			bis = new BufferedInputStream(new FileInputStream(host));
			bos = new BufferedOutputStream(new FileOutputStream(target));
			byte[] b = new byte[1024 * 10];
			int length;
			while ((length = bis.read(b)) != -1) {
				bos.write(b, 0, length);
			}
			bos.flush();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (bis != null) {
				bis.close();
			}
			if (bos != null) {
				bos.close();
			}
		}

	}
而当把复制的方法放到递归中时出现了错误:
// Recursion chart
	public static void moveFile(File parent, String suffix, String targetParent) {
		File[] files = parent.listFiles();
		for (File f : files) {
			if (f.isDirectory()) {
				moveFile(f, suffix, targetParent);
			} else {
				String fname = f.getName();
				if (fname.contains(suffix)) {
					try {
						moveFile(f, new File(targetParent + "" + fname));
						System.out.println(f.getAbsolutePath() + "---OK");
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}
		}
	}
在代码执行的过程中是正常的,可以看到一个个文件在增加,而且也可以打开看。

可是当代码执行完成后,所有文件的大小全部变为0,而且打不开。

做了一个实验,在代码运行的过程中强制关闭运行时,已经复制好的文件正常,可以打开。不知道是哪里出错了,烦大神解答。谢谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

飘过的浮云 2021-11-18 06:36:23

重载

英雄似剑 2021-11-17 08:13:43

@leo108 奥奥..

把回忆走一遍 2021-11-15 23:26:35

你这两个方法名字一样啊

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文