现在的位置: 首页 > 综合 > 正文

JAVA 如何创建\删除\修改\复制目录及文件

2013年06月16日 ⁄ 综合 ⁄ 共 4782字 ⁄ 字号 评论关闭
这需要导入java.io类

// www.gamvan.com 

import java.io.*;

public class FileOperate {

  public FileOperate() {

  }

  /**

   * 新建目录

   * @param folderPath String 如 c:/fqf

   * @return boolean

   */

  public void newFolder(String folderPath) {

    try {

      String filePath = folderPath;

      filePath = filePath.toString();

      java.io.File myFilePath = new java.io.File(filePath);

      if (!myFilePath.exists()) {

        myFilePath.mkdir();

      }

    }

    catch (Exception e) {

      System.out.println("新建目录操作出错");

      e.printStackTrace();

    }

  }

  /**

   * 新建文件

   * @param filePathAndName String 文件路径及名称 如c:/fqf.txt

   * @param fileContent String 文件内容

   * @return boolean

   */

  public void newFile(String filePathAndName, String fileContent) {

    try {

      String filePath = filePathAndName;

      filePath = filePath.toString();

      File myFilePath = new File(filePath);

      if (!myFilePath.exists()) {

        myFilePath.createNewFile();

      }

      FileWriter resultFile = new FileWriter(myFilePath);

      PrintWriter myFile = new PrintWriter(resultFile);

      String strContent = fileContent;

      myFile.println(strContent);

      resultFile.close();

    }

    catch (Exception e) {

      System.out.println("新建目录操作出错");

      e.printStackTrace();

    }

  }

  /**

   * 删除文件

   * @param filePathAndName String 文件路径及名称 如c:/fqf.txt

   * @param fileContent String

   * @return boolean

   */

  public void delFile(String filePathAndName) {

    try {

      String filePath = filePathAndName;

      filePath = filePath.toString();

      java.io.File myDelFile = new java.io.File(filePath);

      myDelFile.delete();

    }

    catch (Exception e) {

      System.out.println("删除文件操作出错");

      e.printStackTrace();

    }

  }

  /**

   * 删除文件夹

   * @param filePathAndName String 文件夹路径及名称 如c:/fqf

   * @param fileContent String

   * @return boolean

   */

  public void delFolder(String folderPath) {

    try {

      delAllFile(folderPath); //删除完里面所有内容

      String filePath = folderPath;

      filePath = filePath.toString();

      java.io.File myFilePath = new java.io.File(filePath);

      myFilePath.delete(); //删除空文件夹

    }

    catch (Exception e) {

      System.out.println("删除文件夹操作出错");

      e.printStackTrace();

    }

  }

  /**

   * 删除文件夹里面的所有文件

   * @param path String 文件夹路径 如 c:/fqf

   */

  public void delAllFile(String path) {

    File file = new File(path);

    if (!file.exists()) {

      return;

    }

    if (!file.isDirectory()) {

      return;

    }

    String[] tempList = file.list();

    File temp = null;

    for (int i = 0; i < tempList.length; i++) {

      if (path.endsWith(File.separator)) {

        temp = new File(path + tempList[i]);

      }

      else {

        temp = new File(path + File.separator + tempList[i]);

      }

      if (temp.isFile()) {

        temp.delete();

      }

      if (temp.isDirectory()) {

        delAllFile(path+"/"+ tempList[i]);//先删除文件夹里面的文件

        delFolder(path+"/"+ tempList[i]);//再删除空文件夹

      }

    }

  }

  /**

   * 复制单个文件

   * @param oldPath String 原文件路径 如:c:/fqf.txt

   * @param newPath String 复制后路径 如:f:/fqf.txt

   * @return boolean

   */

  public void copyFile(String oldPath, String newPath) {

    try {

      int bytesum = 0;

      int byteread = 0;

      File oldfile = new File(oldPath);

      if (oldfile.exists()) { //文件存在时

        InputStream inStream = new FileInputStream(oldPath); //读入原文件

        FileOutputStream fs = new FileOutputStream(newPath);

        byte[] buffer = new byte[1444];

        int length;

        while ( (byteread = inStream.read(buffer)) != -1) {

          bytesum += byteread; //字节数 文件大小

          System.out.println(bytesum);

          fs.write(buffer, 0, byteread);

        }

        inStream.close();

      }

    }

    catch (Exception e) {

      System.out.println("复制单个文件操作出错");

      e.printStackTrace();

    }

  }

  /**

   * 复制整个文件夹内容

   * @param oldPath String 原文件路径 如:c:/fqf

   * @param newPath String 复制后路径 如:f:/fqf/ff

   * @return boolean

   */

  public void copyFolder(String oldPath, String newPath) {

    try {

      (new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹

      File a=new File(oldPath);

      String[] file=a.list();

      File temp=null;

      for (int i = 0; i < file.length; i++) {

        if(oldPath.endsWith(File.separator)){

          temp=new File(oldPath+file[i]);

        }

        else{

          temp=new File(oldPath+File.separator+file[i]);

        }

        if(temp.isFile()){

          FileInputStream input = new FileInputStream(temp);

          FileOutputStream output = new FileOutputStream(newPath + "/" +

              (temp.getName()).toString());

          byte[] b = new byte[1024 * 5];

          int len;

          while ( (len = input.read(b)) != -1) {

            output.write(b, 0, len);

          }

          output.flush();

          output.close();

          input.close();

        }

        if(temp.isDirectory()){//如果是子文件夹

          copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);

        }

      }

    }

    catch (Exception e) {

      System.out.println("复制整个文件夹内容操作出错");

      e.printStackTrace();

    }

  }

  /**

   * 移动文件到指定目录

   * @param oldPath String 如:c:/fqf.txt

   * @param newPath String 如:d:/fqf.txt

   */

  public void moveFile(String oldPath, String newPath) {

    copyFile(oldPath, newPath);

    delFile(oldPath);

  }

  /**

   * 移动文件到指定目录

   * @param oldPath String 如:c:/fqf.txt

   * @param newPath String 如:d:/fqf.txt

   */

  public void moveFolder(String oldPath, String newPath) {

    copyFolder(oldPath, newPath);

    delFolder(oldPath);

  }

}

抱歉!评论已关闭.