文件与文件夹的创建、删除、复制

  1  /**
  2   *  @author  最近想跳河
  3   * 文件与文件夹的创建、删除、复制
  4    */
  5  public  class FileManager {
  6      /**
  7       * 创建文件
  8       *  @param  path 文件路径
  9       *  @return  boolean类型
 10        */
 11      public  static  boolean crtFile(String path){
 12          boolean flag =  false; // 参数返回值,局部变量
 13          File file =  new File(path);
 14          if (!file.exists()){
 15              try { // 创建一个文件
 16                  flag = file.createNewFile();
 17             }  catch (IOException e) {
 18                 e.printStackTrace();
 19             }
 20         }
 21          return flag;
 22     }
 23      /**
 24       * 创建文件夹
 25       *  @param  path 文件夹路径
 26       *  @return  boolean类型
 27        */
 28      public  static  boolean crtFolder(String path){
 29          boolean flag =  false; // 参数返回值,局部变量
 30          File file =  new File(path);
 31          if (!file.exists()){
 32             flag = file.mkdir();
 33         }
 34          return flag;
 35     }
 36      /**
 37       * 删除文件
 38       *  @param  path 文件路径
 39       *  @return  boolean类型
 40        */
 41      public  static  boolean delFile(String path){
 42          boolean flag =  false; // 参数返回值,局部变量
 43          File file =  new File(path);
 44          if(file.exists()&& file.isFile()){ // 文件且存在
 45              flag =file.delete(); // 删除,给局部变量赋值
 46          }
 47          return flag;
 48     }
 49      /**
 50       * 删除文件夹以及子文件及文件夹 先删除“所有子文件夹”下的文件,最后把这个空文件夹删除
 51       *  @param  path 文件夹路径
 52        */
 53      public  static  void delFolder(String path) {
 54         File folder =  new File(path);
 55          if (folder.exists() && folder.isDirectory()) { //  文件夹存在且是文件夹
 56              File[] lists = folder.listFiles(); //  取得文件夹下的所有文件与文件夹
 57               for ( int i = 0; i < lists.length; i++) {
 58                  if (lists[i].isFile()) { //  取得所有文件
 59                      lists[i].delete(); //  删除文件
 60                  }
 61                  if (lists[i].isDirectory()) { //  取得所有文件夹
 62                      delFolder(lists[i].getPath()); //  递归,将所有文件夹下的文件全部删除
 63                  }
 64             }
 65         } // 递归循环出来一次,就删除一个文件夹
 66          folder.delete(); //  文件夹下的文件全部删除,删除空文件夹
 67      }
 68 
 69      /**
 70       * 复制文件,此为复制文件的正解。逐个缓存读取源文件,逐个缓存写入目标文件 文件结尾将会返回-1 这种方法可以读取写入的文件大小不受限制
 71       *  @param  sourcePath 源文件路径
 72       *  @param  targetPath 目标文件路径
 73       *  @throws  IOException 抛错
 74        */
 75      public  static  void copyFile(String sourcePath, String targetPath)
 76              throws IOException {
 77          if (!sourcePath.equals(targetPath)) { //  源文件路径和拷贝的目标路径不一致才可以执行
 78              File fileSource =  new File(sourcePath); //  源文件实例化
 79               if (fileSource.exists()) { //  源文件存在
 80                   if (fileSource.isFile()) { //  判断源文件是否为“文件”
 81                      File fileTarget =  new File(targetPath); //  目标文件实例化
 82                      InputStream streamIn =  new FileInputStream(fileSource); //  输入流,输入对象源文件
 83                      OutputStream streamOut =  new FileOutputStream(fileTarget); //  输出流,输出对象目标文件
 84                       byte[] buff =  new  byte[1024]; //  声明1024字节的缓存
 85                       for ( int i = 0; (i = streamIn.read(buff)) > 0;) { //  逐个缓存读取,再输入流到达结尾时i=-1不满足循环条件
 86                          streamOut.write(buff); //  逐个缓存写入
 87                      }
 88                     streamIn.close(); //  关闭输入流
 89                      streamOut.close(); //  关闭输出流
 90                  }
 91             }
 92         }
 93     }
 94 
 95      /**
 96       * 复制文件夹
 97       *  @param  source 源文件夹
 98       *  @throws  IOException
 99        */
100      public  static  void copyFolder(String source, String target)
101              throws IOException {
102          if (!source.equals(target)) { //  源文件路径和拷贝的目标路径不一致才可以执行
103              File fileSource =  new File(source); //  源文件实例化
104               if (fileSource.exists()) { //  源文件存在
105                   if (fileSource.isDirectory()) { //  判断源文件是否为“文件夹”
106                      File fileTarget =  new File(target);
107                     fileTarget.mkdir(); //  创建目标文件夹
108                      File[] lists = fileSource.listFiles(); //  取得此文件夹下的所有文件及文件夹
109                       for ( int i = 0; i < lists.length; i++) {
110                          if (lists[i].isFile()) {
111                              //  路径寻找较为周折,源路径不会变化。目标路径=拷贝文件路径+分隔符+源文件名称
112                              FileManager.copyFile(lists[i].getPath(),
113                                     fileTarget.getPath() + File.separatorChar
114                                             + lists[i].getName());
115                         }
116                          if (lists[i].isDirectory()) { //  有子文件夹则递归,递归只需要考虑下一个就可以了
117                              copyFolder(lists[i].getPath(), target
118                                     + File.separatorChar + lists[i].getName()); //  递归
119                          }
120                     }
121                 }
122             }
123         }
124     }
125 }

转载于:https://www.cnblogs.com/ponyblog/archive/2011/12/16/2289619.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值