欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java怎么创建目录(删除/修改/复制目录及文件)代码实例

程序员文章站 2024-02-19 09:06:34
复制代码 代码如下:import java.io.*; public class fileoperate {   public fileoperate() {...

复制代码 代码如下:

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);

  }
}