黑马程序员技术交流社区

标题: java文件和文件夹复制、删除、移动操作 [打印本页]

作者: 周志龙    时间: 2013-10-13 18:32
标题: java文件和文件夹复制、删除、移动操作
  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.FileWriter;
  5. import java.io.InputStream;
  6. import java.io.PrintWriter;

  7. public  class  CopyFile  {  
  8.    public  CopyFile()  {  
  9.    }  
  10.   
  11.    /**  
  12.      *  新建目录  
  13.      *  @param  folderPath  String  如  c:/fqf  
  14.      *  @return  boolean  
  15.      */
  16.    public  void  newFolder(String  folderPath)  {  
  17.        try  {  
  18.            String  filePath  =  folderPath;  
  19.            filePath  =  filePath.toString();  
  20.            java.io.File  myFilePath  =  new  java.io.File(filePath);  
  21.            if  (!myFilePath.exists())  {  
  22.                myFilePath.mkdir();  
  23.            }  
  24.        }  
  25.        catch  (Exception  e)  {  
  26.            System.out.println("新建目录操作出错");  
  27.            e.printStackTrace();  
  28.        }  
  29.    }  
  30.   
  31.    /**  
  32.      *  新建文件  
  33.      *  @param  filePathAndName  String  文件路径及名称  如c:/fqf.txt  
  34.      *  @param  fileContent  String  文件内容  
  35.      *  @return  boolean  
  36.      */
  37.    public  void  newFile(String  filePathAndName,  String  fileContent)  {  
  38.   
  39.        try  {  
  40.            String  filePath  =  filePathAndName;  
  41.            filePath  =  filePath.toString();  //取的路径及文件名
  42.            File  myFilePath  =  new  File(filePath);  
  43.            /**如果文件不存在就建一个新文件*/
  44.            if  (!myFilePath.exists())  {  
  45.                myFilePath.createNewFile();  
  46.            }  
  47.            FileWriter  resultFile  =  new  FileWriter(myFilePath);  //用来写入字符文件的便捷类, 在给出 File 对象的情况下构造一个 FileWriter 对象
  48.            PrintWriter  myFile  =  new  PrintWriter(resultFile);  //向文本输出流打印对象的格式化表示形式,使用指定文件创建不具有自动行刷新的新 PrintWriter。
  49.            String  strContent  =  fileContent;  
  50.            myFile.println(strContent);  
  51.            resultFile.close();  
  52.   
  53.        }  
  54.        catch  (Exception  e)  {  
  55.            System.out.println("新建文件操作出错");  
  56.            e.printStackTrace();  
  57.   
  58.        }  
  59.   
  60.    }  
  61.   
  62.    /**  
  63.      *  删除文件  
  64.      *  @param  filePathAndName  String  文件路径及名称  如c:/fqf.txt  
  65.      *  @param  fileContent  String  
  66.      *  @return  boolean  
  67.      */
  68.    public  void  delFile(String  filePathAndName)  {  
  69.        try  {  
  70.            String  filePath  =  filePathAndName;  
  71.            filePath  =  filePath.toString();  
  72.            java.io.File  myDelFile  =  new  java.io.File(filePath);  
  73.            myDelFile.delete();  
  74.   
  75.        }  
  76.        catch  (Exception  e)  {  
  77.            System.out.println("删除文件操作出错");  
  78.            e.printStackTrace();  
  79.   
  80.        }  
  81.   
  82.    }  
  83.   
  84.    /**  
  85.      *  删除文件夹  
  86.      *  @param  filePathAndName  String  文件夹路径及名称  如c:/fqf  
  87.      *  @param  fileContent  String  
  88.      *  @return  boolean  
  89.      */
  90.    public  void  delFolder(String  folderPath)  {  
  91.        try  {  
  92.            delAllFile(folderPath);  //删除完里面所有内容  
  93.            String  filePath  =  folderPath;  
  94.            filePath  =  filePath.toString();  
  95.            java.io.File  myFilePath  =  new  java.io.File(filePath);  
  96.            myFilePath.delete();  //删除空文件夹  
  97.   
  98.        }  
  99.        catch  (Exception  e)  {  
  100.            System.out.println("删除文件夹操作出错");  
  101.            e.printStackTrace();  
  102.   
  103.        }  
  104.   
  105.    }  
  106.   
  107.    /**  
  108.      *  删除文件夹里面的所有文件  
  109.      *  @param  path  String  文件夹路径  如  c:/fqf  
  110.      */
  111.    public  void  delAllFile(String  path)  {  
  112.        File  file  =  new  File(path);  
  113.        if  (!file.exists())  {  
  114.            return;  
  115.        }  
  116.        if  (!file.isDirectory())  {  
  117.            return;  
  118.        }  
  119.        String[]  tempList  =  file.list();  
  120.        File  temp  =  null;  
  121.        for  (int  i  =  0;  i  <  tempList.length;  i++)  {  
  122.            if  (path.endsWith(File.separator))  {  
  123.                temp  =  new  File(path  +  tempList[i]);  
  124.            }  
  125.            else  {  
  126.                temp  =  new  File(path  +  File.separator  +  tempList[i]);  
  127.            }  
  128.            if  (temp.isFile())  {  
  129.                temp.delete();  
  130.            }  
  131.            if  (temp.isDirectory())  {  
  132.                delAllFile(path+"/"+  tempList[i]);//先删除文件夹里面的文件  
  133.                delFolder(path+"/"+  tempList[i]);//再删除空文件夹  
  134.            }  
  135.        }  
  136.    }  
  137.   
  138.    /**  
  139.      *  复制单个文件  
  140.      *  @param  oldPath  String  原文件路径  如:c:/fqf.txt  
  141.      *  @param  newPath  String  复制后路径  如:f:/fqf.txt  
  142.      *  @return  boolean  
  143.      */
  144.    public  void  copyFile(String  oldPath,  String  newPath)  {  
  145.        try  {  
  146. //           int  bytesum  =  0;  
  147.            int  byteread  =  0;  
  148.            File  oldfile  =  new  File(oldPath);  
  149.            if  (oldfile.exists())  {  //文件存在时  
  150.                InputStream  inStream  =  new  FileInputStream(oldPath);  //读入原文件
  151.                FileOutputStream  fs  =  new  FileOutputStream(newPath);  
  152.                byte[]  buffer  =  new  byte[1444];  
  153. //               int  length;  
  154.                while  (  (byteread  =  inStream.read(buffer))  !=  -1)  {  
  155. //                   bytesum  +=  byteread;  //字节数  文件大小  
  156. //                   System.out.println(bytesum);  
  157.                    fs.write(buffer,  0,  byteread);  
  158.                }  
  159.                inStream.close();  
  160.            }  
  161.        }  
  162.        catch  (Exception  e)  {  
  163.            System.out.println("复制单个文件操作出错");  
  164.            e.printStackTrace();  
  165.   
  166.        }  
  167.   
  168.    }  
  169.   
  170.    /**  
  171.      *  复制整个文件夹内容  
  172.      *  @param  oldPath  String  原文件路径  如:c:/fqf  
  173.      *  @param  newPath  String  复制后路径  如:f:/fqf/ff  
  174.      *  @return  boolean  
  175.      */
  176.    public  void  copyFolder(String  oldPath,  String  newPath)  {  
  177.   
  178.        try  {  
  179.            (new  File(newPath)).mkdirs();  //如果文件夹不存在  则建立新文件夹  
  180.            File  a=new  File(oldPath);  
  181.            String[]  file=a.list();  
  182.            File  temp=null;  
  183.            for  (int  i  =  0;  i  <  file.length;  i++)  {  
  184.                if(oldPath.endsWith(File.separator)){  
  185.                    temp=new  File(oldPath+file[i]);  
  186.                }  
  187.                else{  
  188.                    temp=new  File(oldPath+File.separator+file[i]);  
  189.                }  
  190.   
  191.                if(temp.isFile()){  
  192.                    FileInputStream  input  =  new  FileInputStream(temp);  
  193.                    FileOutputStream  output  =  new  FileOutputStream(newPath  +  "/"  +
  194.                            (temp.getName()).toString());  
  195.                    byte[]  b  =  new  byte[1024  *  5];  
  196.                    int  len;  
  197.                    while  (  (len  =  input.read(b))  !=  -1)  {  
  198.                        output.write(b,  0,  len);  
  199.                    }  
  200.                    output.flush();  
  201.                    output.close();  
  202.                    input.close();  
  203.                }  
  204.                if(temp.isDirectory()){//如果是子文件夹  
  205.                    copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);  
  206.                }  
  207.            }  
  208.        }  
  209.        catch  (Exception  e)  {  
  210.            System.out.println("复制整个文件夹内容操作出错");  
  211.            e.printStackTrace();  
  212.   
  213.        }  
  214.   
  215.    }  
  216.   
  217.    /**  
  218.      *  移动文件到指定目录  
  219.      *  @param  oldPath  String  如:c:/fqf.txt  
  220.      *  @param  newPath  String  如:d:/fqf.txt  
  221.      */
  222.    public  void  moveFile(String  oldPath,  String  newPath)  {  
  223.        copyFile(oldPath,  newPath);  
  224.        delFile(oldPath);  
  225.   
  226.    }  
  227.   
  228.    /**  
  229.      *  移动文件到指定目录  
  230.      *  @param  oldPath  String  如:c:/fqf.txt  
  231.      *  @param  newPath  String  如:d:/fqf.txt  
  232.      */
  233.    public  void  moveFolder(String  oldPath,  String  newPath)  {  
  234.        copyFolder(oldPath,  newPath);  
  235.        delFolder(oldPath);  
  236.   
  237.    }  
  238.    public static void main(String[] args){
  239.     CopyFile file = new CopyFile();
  240. //    file.newFolder("newFolder22222");
  241.     file.delAllFile("E:/1");
  242.    }
  243. // 拷贝文件
  244.    private void copyFile2(String source, String dest) {
  245.    try {
  246.    File in = new File(source);
  247.    File out = new File(dest);
  248.    FileInputStream inFile = new FileInputStream(in);
  249.    FileOutputStream outFile = new FileOutputStream(out);
  250.    byte[] buffer = new byte[10240];
  251.    int i = 0;
  252.    while ((i = inFile.read(buffer)) != -1) {
  253.    outFile.write(buffer, 0, i);
  254.    }//end while
  255.    inFile.close();
  256.    outFile.close();
  257.    }//end try
  258.    catch (Exception e) {

  259.    }//end catch
  260.    }//end copyFile

  261. }
复制代码





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