JDK 递归 文件复制 最后文件的大小怎么都变成零了
今天准备把一些不同文件夹下的教学视频集合到一个文件夹下,一个个动手拉太慢了,就想说用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
重载
@leo108 奥奥..
你这两个方法名字一样啊