黑马程序员技术交流社区

标题: 我写了一个文件复制 当时碰到文件夹的时候用了递归就会成死循环 [打印本页]

作者: 没胡子的小眼睛    时间: 2015-1-16 20:19
标题: 我写了一个文件复制 当时碰到文件夹的时候用了递归就会成死循环
注释那里 是如果有文件夹的情况 也将文件夹也里的内容也读出来
  1. * @param old 复制
  2.          * @param outld 读取
  3.          */
  4.         public static void FileCopyDemo(File old,File outld){
  5.                 FileInputStream bfr = null;
  6.                 FileOutputStream fos = null;
  7.                 try {
  8.                                 File[] file = outld.listFiles();
  9.                                 for(File f:file){
  10.                                         if(f.isDirectory()){
  11.                                                 //我想在这把读到的文件夹中的Java类型问下也复制出来
  12.                                         }else{
  13.                                         if(f.getName().endsWith(".java")){
  14.                                                
  15.                                                         bfr =new FileInputStream(outld+old.separator+f.getName());
  16.                                                         fos = new FileOutputStream(old+old.separator+f.getName());
  17.                                                         byte[] chr = new byte[1024];
  18.                                                         System.out.println(chr.length);
  19.                                                         int len = bfr.read(chr);
  20.                                                         if(len!=-1)
  21.                                                         fos.write(chr);
  22.                                         }
  23.                                         }
  24.                                 }
  25.                
  26.                 } catch (Exception e) {
  27.                         e.printStackTrace();
  28.                 }finally{
  29.                         try {
  30.                                 if(bfr!=null){
  31.                                         bfr.close();
  32.                                 }
  33.                         } catch (Exception e2) {
  34.                                 // TODO: handle exception
  35.                         }finally{
  36.                                 try {
  37.                                         if(fos!=null)
  38.                                                 fos.close();
  39.                                 } catch (Exception e3) {
  40.                                         // TODO: handle exception
  41.                                 }
  42.                         }
  43.                         System.out.println("复制完毕");
  44.                 }
  45.         }
复制代码


作者: 被风扬起的沙    时间: 2015-1-16 21:53
先不用try catch finally 显得更乱。直接抛就行
作者: 没胡子的小眼睛    时间: 2015-1-16 22:45
被风扬起的沙 发表于 2015-1-16 21:53
先不用try catch finally 显得更乱。直接抛就行

一种写法吧  学哥 问下我注释那里 怎么去处理那个文件夹压
作者: 被风扬起的沙    时间: 2015-1-17 21:35
没胡子的小眼睛 发表于 2015-1-16 22:45
一种写法吧  学哥 问下我注释那里 怎么去处理那个文件夹压

回头我看一下
作者: 初见。    时间: 2015-1-17 22:34
好难感觉不会啊,,,
作者: 被风扬起的沙    时间: 2015-1-17 23:59
package 遍历文件夹里面的文件;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class BianLi {
public static void main(String[] args) throws IOException {
        File a=new File("d:\\123");
        BianLi(a);

}
public static void BianLi(File file) throws IOException{
        File[] arr=file.listFiles();
        for(File i:arr){
                if(i.isFile()){
                        BufferedInputStream bis=new BufferedInputStream(new FileInputStream(i));
                        byte[] bys=new byte[1024];
                        int ch=0;
                        while((ch=bis.read(bys))!=-1){
                        System.out.println(new String(bys,0,ch));        
                        }
                        bis.close();
                }else{
                        BianLi(i);
                }
               
        }
}
}
自定义一个方法就可以。主函数进行调用






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2