如果希望在程序中操作文件和目录,都可以通过File类来实现。File能新建、删除、重命名文件和目录,File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用I/O流。

一. 创建一个文件

1
2
3
4
5
6
7
8
9
10
11
//在工作空间目录下创建a.txt的文件
File f = new File("a.txt");
f.createNewFile();
在G:\路径下创建一个a.txt的文件.如果已经有的话这不会重新创建
File f = new File("G:\\a.txt");
f.createNewFile();
如果路径写成\\a.txt,会在盘符下创建新的文件
File f = new File("\\a.txt");
f.createNewFile();

二. 创建一个文件夹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//在工作空间目录下创建a.txt的文件夹
File f = new File("a");
f.mkdir();
在G:\路径下创建一个a.txt的文件夹.如果已经有的话这不会重新创建
File f = new File("G:\\a");
f.mkdir();
如果路径写成\\a.txt,会在盘符下创建新的文件夹
File f = new File("\\a");
f.mkdir();
在g盘下创建文件夹a,a 下创建一个b文件夹
File f = new File("G:\\a\\b");
f.mkdirs(); //注意mkdirs(),创建多个文件夹

三. 使用list()方法列出当前路径下的所有文件

1
2
3
4
5
6
7
File f =new File ("D:\\学习\\Java\\b\\a");
f.mkdirs();
//列出当前路径下的所有文件
String[] filelist = f.list();
for (String filename : filelist){
System.out.println(filename);
}

四. 文件名过滤器FilenameFilter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//在f1的文件夹中过滤出后缀名为"txt"的文件
public static void main(String[] args){
File f1 = new File("D:\\学习\\Java\\b");
String[] s = f1.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
File f = new File(dir, name);
if (f.isDirectory()) {
return false;
}
if (f.getName().endsWith("txt")) {
return true;
}
return false;
}
});
for(String name : s){
System.out.println(name);
}
}

五. 文件过滤器FileFilter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//在f1文件夹中过滤出文件长度大于20KB的文件
File f1 = new File("D:\\学习\\Java\\b");
File[] fs = f1.listFiles(new FileFilter() {
public boolean accept(File pathname) {
if (pathname.length() > 1024 * 20) {
return true;
}
return false;
}
});
for(File name : fs){
System.out.println(name);
}

六. 其它一些常用方法

  • f.delete(); //删除file
  • f.exists(); //file是否存在
  • f.getName(); //得到file名字
  • f.isDirectory(); //file是否是文件夹
  • f.isFile(); //file是否是文件
  • f.length(); //file的长度

最后更新: 2020年07月27日 03:36

原始链接: https://www.lousenjay.top/2018/01/27/File类分析/