JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
我们可以继续了,今天说下File
一.File概述
文件的操作是非常重要的,我们先来看下他的基本概念
- 用于将文件或者文件夹封装成对象
- 方便对文件和文件夹的操作
- File对象可以作为参数传递给流的构造函数
我们写个小例子先
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 1package com.lgl.hellojava;
2
3import java.io.File;
4
5public class HelloJJAVA {
6 public static void main(String[] args) {
7 // 创建File对象,不存在也没事
8 File file = new File("a.txt");
9 //目录 文件名
10 File file2 = new File("F:\\isblog\\Demo","a.txt");
11
12 //封装什么就打印什么
13 System.out.println(file);
14 }
15}
16
17
其实就是一个类的使用
二.创建删除
是文件肯定有操作方法
- 1.创建
- 2.删除
- 3.判断
- 4.获取信息
1.创建
忽然如此,我们用实际的例子来说明岂不妙哉?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 1package com.lgl.hellojava;
2
3import java.io.File;
4import java.io.IOException;
5
6public class HelloJJAVA {
7 public static void main(String[] args) {
8 // 创建File对象
9 File file = new File("a.txt");
10
11 try {
12 //创建
13 file.createNewFile();
14 } catch (IOException e) {
15 // TODO Auto-generated catch block
16 e.printStackTrace();
17 }
18 }
19}
20
21
在指定的位置创建文件,如果文件已经存在,就不创建,并且返回false,和输出流不一样,输出流对象已建立文件,文件就已经存在,会覆盖
2.删除
删除我就不说了,直接这样
1
2 1file.delete();
2
他还有一个方法比较好玩
1
2 1file.deleteOnExit();
2
在程序退出之后删除文件
三.判断文件存在
判断文件是否存在
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 1package com.lgl.hellojava;
2
3import java.io.File;
4import java.io.IOException;
5
6public class HelloJJAVA {
7 public static void main(String[] args) {
8 // 创建File对象
9 File file = new File("a.txt");
10 // 判断是否存在,不存在则创建
11 if (!file.exists()) {
12 try {
13 file.createNewFile();
14 } catch (IOException e) {
15 // TODO Auto-generated catch block
16 e.printStackTrace();
17 }
18 }
19 }
20}
21
22
这样我们就可以去判断文件是否存在且不存在就去创建文件了。
四.创建文件夹
我们继续来看怎么去创建文件夹,其实也很简单
1
2
3
4
5
6
7
8
9
10
11
12
13 1package com.lgl.hellojava;
2
3import java.io.File;
4
5public class HelloJJAVA {
6 public static void main(String[] args) {
7 // 创建File对象
8 File file = new File("liuguilin");
9 file.mkdir();
10 }
11}
12
13
OK,这样的话,就创建了,这里注意mkdir只能创建一级目录,而mkdirs可以创建多级文件夹目录
五.判断是否为文件/文件夹
有时候还是需要的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 1package com.lgl.hellojava;
2
3import java.io.File;
4
5public class HelloJJAVA {
6 public static void main(String[] args) {
7 File file = new File("liuguilin");
8 //是否为文件
9 System.out.println(file.isFile());
10 //是否为文件夹
11 System.out.println(file.isDirectory());
12 }
13}
14
15
他返回的是boolean值来确定是否存在,但是这里也要记住一电,就是一定要确定这个文件是否存在,所以我们的流程可以这样写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 1package com.lgl.hellojava;
2
3import java.io.File;
4import java.io.IOException;
5
6public class HelloJJAVA {
7 public static void main(String[] args) {
8 File file = new File("liuguilin");
9 // 判断文件是否存在
10 if (file.exists()) {
11 // 再去判断文件还是文件夹
12 if (file.isFile()) {
13 System.out.println("文件");
14 } else if (file.isDirectory()) {
15 System.out.println("文件夹");
16 }
17 } else {
18 try {
19 file.createNewFile();
20 } catch (IOException e) {
21 // TODO Auto-generated catch block
22 e.printStackTrace();
23 }
24 }
25 }
26}
27
28
这样逻辑是比较清晰的
六.获取信息
获取的话,我们是怎么去获取信息的呢?毫无疑问,是get,比如getNmae之类的,我们用代码里的注释来说明是比较好的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 1package com.lgl.hellojava;
2
3import java.io.File;
4
5public class HelloJJAVA {
6 public static void main(String[] args) {
7 File file = new File("liuguilin.txt");
8 File file2 = new File("haha.txt");
9 // 项目路径下+文件名
10 System.out.println("路径:" + file.getPath());
11 // 全路径
12 System.out.println("绝对路径:" + file.getAbsolutePath());
13 // 最后一次修改时间
14 System.out.println("时间:" + file.lastModified());
15 // 绝对路径中的文件父目录,如果是相对路径,返回的为空
16 System.out.println("父目录:" + file.getParent());
17 // 把内容拷贝到另一个文本中并且删除自身
18 System.out.println(file.renameTo(file2));
19 }
20}
21
22
运行的结果
七.文件列表
列出可用的系统目录,我们看代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 1package com.lgl.hellojava;
2
3import java.io.File;
4
5public class HelloJJAVA {
6 public static void main(String[] args) {
7 File[] listRoots = File.listRoots();
8 for (File f : listRoots) {
9 // 打印磁盘目录
10 System.out.println(f);
11 }
12 }
13}
14
15
这样我们就可以得到有效盘符了
我们可以进行改进,我们打印C盘下的所有文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 1package com.lgl.hellojava;
2
3import java.io.File;
4
5public class HelloJJAVA {
6 public static void main(String[] args) {
7 //必须封装了一个目录,该目录还必须存在
8 File f = new File("c:\\");
9 String[] list = f.list();
10 for (String fi : list) {
11 System.out.println(fi);
12 }
13 }
14}
15
16
得到的肯定就是所有文件的列表咯
八.文件过滤
我们做文件夹的时候经常会用到的一个小知识点,就是过滤文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 1package com.lgl.hellojava;
2
3import java.io.File;
4import java.io.FilenameFilter;
5
6public class HelloJJAVA {
7 public static void main(String[] args) {
8 File f = new File("c:\\");
9 String[] list = f.list(new FilenameFilter() {
10 // 过滤
11 @Override
12 public boolean accept(File dir, String name) {
13 // 只返回txt后缀的文件
14 return name.endsWith(".txt");
15 }
16 });
17 for (String fi : list) {
18 // 过滤
19 System.out.println(fi);
20 }
21 }
22
23}
24
25
需要监听,然后过滤,当然,他还有一些其他的子类listFiles就不讲了,详细的翻阅下API
我们本篇博文就先到这里