File类和案例

来源:互联网 发布:js实现在线客服功能 编辑:程序博客网 时间:2024/06/04 19:05


 

File类中常用的方法:
 创建:
  createNewFile() 在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false
  mkdir()   在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。
  mkdirs()  在指定位置创建目录,这会创建路径中所有不存在的目录。
  renameTo(File dest) 重命名文件 , 文件夹不同时相当于文件的剪切。移动/重命名成功则返回true,失败则返回false。
 删除:
  delete()  删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功返回true,失败返回false。
  deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删除
 判断:
  exists()  文件或文件夹是否存在。
  isFile()  是否是一个文件,如果不存在,则始终为false。
  isDirectory() 是否是一个目录,如果不存在,则始终为false。
  isHidden()  是否是一个隐藏的文件或是否是隐藏的目录。
  isAbsolute() 测试此抽象路径名是否为绝对路径名。
 获取:
  getName()  获取文件或文件夹的名称,不包含上级路径。
  getPath()       返回绝对路径下父目录,可以是相对路径,但是目录要指定
  getAbsolutePath() 获取文件的绝对路径,与文件是否存在没关系
  length()  获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
  getParent()  返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
  lastModified() 获取最后一次被修改的时间。
文件夹相关:
  staic File[] listRoots() 列出所有的根目录(Window中就是所有系统的盘符)
  list()      返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。
  list(FilenameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
  listFiles()     返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。
  listFiles(FilenameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。



列出指定目录中所有包含的子文件与子目录的名称

 public static void listAllFilesAndDirs(String path) {
  // 1,创建File对象,表示这个目录
  File dir = new File(path);

  // 2,通过list()方法得到所包含的所有子目录与子文件名称。
  String[] names = dir.list();

  // 3,显示这些名称
  for (int i = 0; i < names.length; i++) {
   System.out.println(names[i]);
  }
 }

 

列出指定目录中所有的子孙文件与子孙文件夹(递归)

递归调用,要有层次
 public static void listAllFilesAndDirs2(File dir, String prefix) {
  File[] files = dir.listFiles();
  for (int i = 0; i < files.length; i++) {
   File file = files[i];

   // 显示名称
   System.out.println(prefix + file.getName());

   // 如果是目录,就递归调用自己
   if (file.isDirectory()) {
    listAllFilesAndDirs2(file, "\t" + prefix); // 显示下一层
   }
  }
 }



列出指定目录中所有的子孙文件与子孙文件夹(2)
 要求名称前面要有相应数量的空格: 第一级前面有0个,第二级前面有1个,第三级前面有2个...,以此类推。

 // 调用代码:listAllFilesAndDirs3(dir, 0);
 public static void listAllFilesAndDirs3(File dir, int num) {
  File[] files = dir.listFiles();
  for (int i = 0; i < files.length; i++) {
   File file = files[i];

   // 计算前面应有几个空格
   String prefix = "";
   for (int j = 0; j < num; j++) {
    prefix += "\t";
   }

   // 显示名称
   System.out.println(prefix + file.getName());

   // 如果是目录,就递归调用自己
   if (file.isDirectory()) {
    listAllFilesAndDirs3(file, num+1); // 显示下一层
   }
  }
 }


列出指定目录中所有的子孙文件与子孙目录名,要求要是树状结构,效果如下所示:
     |--src
     |   |--cn
     |   |   |--itheima
     |   |   |   |--a_helloworld
     |   |   |   |   |--HelloWorld.java
     |   |   |   |--b_for
     |   |   |   |   |--ForTest.java
     |   |   |   |   |--S.java
     |--bin
     |   |--cn
     |   |   |--itheima
     |   |   |   |--i_exception
     |   |   |   |   |--ExceptionTest.class
     |   |   |   |--h_linecount
     |   |   |   |   |--LineCounter2.class
     |   |   |   |   |--LineCounter.class
     |--lib
     |   |--commons-io.jar
-------------------------------------------------------------------------------------------------

   

public class FileTest4 {

 public static void main(String[] args) {
  File dir = new File("c:/test");
  listFilesAndDirs(dir, "|--");
 }
 // 调用的代码:listFilesAndDirs(dir, "|--");
 public static void listFilesAndDirs(File dir, String prefix) {
  File[] files = dir.listFiles();
  for(int i = 0; i < files.length; i++){
   File file = files[i];
   
   // 显示名称
   System.out.println(prefix + file.getName());
   
   // 显示下一层目录中的内容
   if(file.isDirectory()){
    listFilesAndDirs(file, "|   " + prefix);
   }
  }
 }
}

 


 删除一个非空文件夹
 递归调用

  public static void delete(File dir){
   File[] files = dir.listFiles();
   for(File f: files){
    //判断是否为文件夹
    if(f.isDirectory()){
     delete(f);
     f.delete();
    }
    //判断是否为文件
    else{
     f.delete();
    }
   }
   dir.delete();
   
  }

  

 


原创粉丝点击