Java之File类用法总结

File类概述:文件和文件目录路径的抽象表达形式,与平台无关。
1.File能新建、删除、重命名文件和目录,但File不能访问文件内容本身。
如果需要访问文件内容本身,则需要使用输入/输出流。
2.想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,
但是Java程序中的一个File对象, 可能没有一个真实存在的文件或目录。
3.File对象可以作为参数传递给流的构造器。

File类的构造方法:

 

1. pathName: 表示一个文件路径的字符串表示 "d:\\a.txt"
都可以是绝对路径名或相对路径名。
2.绝对路径名是完整的路径名,不需要任何其他信息,
就可以定位它所表示的文件,在unix: 以"/",在windows:以"盘符:\\"

1. 文件路径分隔符:和操作系统有关
在 UNIX 系统上,此字段为 ':';在 Microsoft Windows 系统上,它为 ';'。
windows f:\a.txt;f:\b.txt
2. 名称分隔符
在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它为 '\\'。

 1 public class FileDemo {
 2 
 3   public static void main(String[] args) {
 4 
 5     //user.dir  System.getProperty(String key)
 6     System.out.println(System.getProperty("user.dir"));  
 7 
 8     //关于字符输出 \
 9     System.out.println('\n');
10     System.out.println('\\');
11 
12     //File (String pathname) 创建File类对象
13     File file = new File("d:\\a.txt");
14 
15     //把文件路径分成了两部分:parent 文件或目录所在的父目录
16     // d:\b.txt  => parenet: d:\   +  b.txt
17     //File (String parent, Sting child)
18 
19     File file1 = new File("d:\\", "b.txt");
20 
21     //File (File parent, String child)
22     File file2 = new File(new File("d:\\"), "b.txt");
23 
24     //假设File类对象,文件目录已经确定
25     //有种特殊情况
26     File supplement = new File("\\test"); //E:\test
27     System.out.println(supplement.getAbsolutePath());
28 
29   }
30 
31   public static void testFile(File parent) {
32     
33     String fileName = "a.txt";
34     File file = new File(parent, fileName);
35   }
36 
37 }

File类的成员方法:

 

  

  

创建功能:
public boolean createNewFile()
public boolean mkdir()
public boolean mkdirs()
当最后一级目录的父目录,不存在的时候,
mkdir创建失败, 但是mkdirs创建会成功
mkdir vs mkdirs
mkdir:当要创建的目录的父目录不存在的时候,
不会自动创建父目录,然后自动创建目标目录
mkdirs: 可以自动为目标目录创建不存在的父目录

 1 public class FileCreateDemo {
 2 
 3   public static void main(String[] args) throws IOException {
 4 
 5     File file = new File("d:\\a.txt");
 6 
 7     //public boolean createNewFile();
 8     boolean newFile = file.createNewFile();
 9     System.out.println("result = " + newFile);
10 
11     //在操作系统中,创建目录
12     //File file1 = new File("d:\\dir\\a");
13     //boolean mkdir = file1.mkdir();
14     //System.out.println("result = " + mkdir);
15 
16     // mkdirs
17     File file2 = new File("d:\\dir\\a");
18     boolean mkdirs = file2.mkdirs();
19     System.out.println("result = " + mkdirs);
20   }
21 }

删除功能:
public boolean delete()
如果此路径名表示一个目录,则该目录必须为空才能删除。

 1 public class FileDeleteDemo {
 2 
 3   public static void main(String[] args) {
 4 
 5     //File file = new File("d:\\a.txt");
 6     //boolean delete = file.delete();
 7     //System.out.println("result = " + delete);
 8     // 即使文件不存在,也不会抛出异常
 9 
10     //测试删除目录只能保证删除空目录
11     File dir = new File("d:\\dir");
12     boolean delete1 = dir.delete();
13     System.out.println("result = " + delete1);
14   }
15 }
 1 public class FileRenameDemo {
 2   public static void main(String[] args) {
 3     File file = new File("d:\\a.txt");
 4     //File rename = new File("d:\\aaa.txt");
 5     //
 6     ////当目标File对象和我们的要改名的File,在同一目录下的时候,则简单的重命名
 7     //boolean b = file.renameTo(rename);
 8     //System.out.println("result = " + b);
 9 
10     //如果目标File对象和我们的要改名的File,不在同一目录下,还会实现一个文件移动的功能
11     File rename = new File("e:\\bbb.txt");
12     boolean b = file.renameTo(rename);
13     System.out.println("result = " + b);
14   }
15 }

File类过滤器接口:

abstract boolean accept(File f) 此过滤器是否接受给定的文件。
当accept返回为true,满足过滤条件 accept方法返回false, 不满足过滤条件。
File[] listFiles(FileFilter filter) 用Filefileter对象,来指明一个对File的一个过滤条件。
ArrayList<File> files 就可以看成是一个可以动态扩容数组,放的是File类型的对象。

 1 public class FileFilterDemo {
 2 
 3   public static void main(String[] args) {
 4 
 5     File dir = new File("d:\\dir");
 6     filterTXT(dir);
 7 
 8     //File[] listFiles(FileFilter filter)
 9     FileFilter filter = new FileFilter() {
10       @Override
11       public boolean accept(File pathname) {
12         return pathname.getName().endsWith(".txt");
13       }
14     };
15 
16     File[] files = dir.listFiles(filter);
17 
18     for (int i = 0; i < files.length; i++) {
19       //System.out.println(files[i].getName());
20     }
21 
22     //ArrayList<File> files
23     ArrayList<File> files1 = new ArrayList<>();
24     //通过add方法向,该可以自动扩容的“数组”中存放元素
25     files1.add(new File("test"));
26 
27     //输出的时候,输出方法会自动掉啊用每一个对象的toString()方法输出
28     //System.out.println(files1);
29   }
30 
31   /*
32       获取执行目录下的 .txt文件信息
33    */
34   public static void filterTXT(File dir) {
35     // 获取到指定目录下的所有的文件或者目录
36     File[] files = dir.listFiles();
37 
38     //遍历所有的文件或者目录
39     for (int i = 0; i < files.length; i++) {
40 
41       if (files[i].isFile()) {
42         //当是文件的时候
43         String name = files[i].getName(); // a.txt
44         // 如果要用split方法分割字符串,'.'
45         String[] split = name.split("\\.");
46         
47         if ("txt".equals(split[split.length - 1])) {
48           System.out.println(files[i]);
49         }
50       }
51     }
52   }
53 }

猜你喜欢

转载自www.cnblogs.com/ZengBlogs/p/12188915.html