Java基础-File类

来源:互联网 发布:淘宝办签证会有假的吗 编辑:程序博客网 时间:2024/05/18 01:30

File类概述
因为数据在硬盘上最常见的方式,就是文件。而文件本身有很多的属性,比如说:文件大小,是否可读,是否隐藏
等。那么,java为了方便我们对文件进行操作,就提供了File类供我们使用。

一个File对象,既可以表示一个文件,也可以用来表示文件夹。理解了这个,对之后学习File类有莫大的好处,最起码能一下看得出当前的file对象到底指的是目录(文件夹)还是文件。File类的三个构造方法:    A:File(String pathname):根据指定的路径创建File对象。    B:File(String parent, String child):根据指定的父文件夹和子文件或者文件夹创建File对象    C:File(File parent, String child):根据指定的父文件夹对象和子文件或者文件夹创建File对象代码如下:
public class FileDemo {    public static void main(String[] args) {        // 方式1        File file = new File("d:\\a.txt");        File file2 = new File("d:\\aaa");        // 方式2        File file3 = new File("d:\\", "a.txt");        File file4 = new File("d:\\", "aaa");        // 方式3        File file5 = new File("d:\\");        File file6 = new File(file5, "a.txt");        File file7 = new File(file5, "aaa");    }}
注意:执行这段代码后,并没有在创建出这些目录和文件夹。这三个构造方法的作用是,将各自的file对象,指向了各自的目录和文件。要想创建出这些文件和目录,需要进一步操作。

File类的创建功能:
A:创建文件:public boolean createNewFile() — 创建文件,如果指定的文件不存在就创建,否则不创建
B:创建文件夹;
a:public boolean mkdir() — 创建指定的目录,如果目录已存在,就不创建
b:public boolean mkdirs() — 创建指定的目录,这个时候,可以创建多级目录,若父目录不存在,也一并创建
ps…绝对路径和相对路径
A:绝对路径:以盘符开始的路径,如:E:\0714深圳黑马基础班\day20
B:相对路径:不以盘符开始的路径,如:test\aaa

代码:
public class FileDemo {    public static void main(String[] args) throws IOException {        // 创建文件        File file = new File("d:\\a.txt");        System.out.println("createNewFile:" + file.createNewFile());        // 创建文件 忘了写路径名称了,以当前项目路径所在路径为父目录        File file2 = new File("a.txt");        System.out.println("createNewFile:" + file2.createNewFile());        // 创建目录        File file3 = new File("aaa");        System.out.println("mkdir:" + file3.mkdir());        // 创建多级目录 如果想创建一个指定的目录或者文件,要求,父目录必须存在。        // File file4 = new File("bbb\\ccc");        // System.out.println("mkdir:" + file4.mkdir());        // 解决方案:        // File file5 = new File("bbb");        // File file6 = new File(file5, "ccc");        // System.out.println("mkdir:" + file5.mkdir());        // System.out.println("mkdir:" + file6.mkdir());        // 如果目录过多,这样做就太麻烦。肿么办呢?        File file4 = new File("bbb\\ccc");        System.out.println("mkdirs:" + file4.mkdirs());        // 创建文件        File file5 = new File("b.txt");        System.out.println("mkdir:" + file5.mkdir());    }}

结果:
这里写图片描述
这里写图片描述
这里需要特别注意的一点时,在创建文件或者文件夹时,一定要明确自己需要的时什么,不要调用了错误的方法,造成一些比较隐蔽的错误。

File类的判断功能:
删除功能:
public boolean delete():既可以删除文件,也可以删除文件夹。取决于你使用的对象。

需要注意的地方:    A:如果要删除的目录下还有内容,那么必须要先把所有内容删除干净后,才能删除该目录    B:特别注意:Java语言的删除不走回收站。别乱删文件,到时欲哭无泪。代码:
public class FileDemo {    public static void main(String[] args) {        // 需求:我要删除a.txt        File file = new File("a.txt");        System.out.println("delete:" + file.delete());        // 需求:我要删除aaa        File file2 = new File("aaa");        System.out.println("delete:" + file2.delete());        // 需求:我要删除bbb        File file3 = new File("bbb");        System.out.println("delete:" + file3.delete());    }}

结果:
这里写图片描述
分析:
最后一个结果为false,是因为在bbb目录下,还有一个ccc目录,必须先删除ccc目录以及ccc目录下所有内容,bbb才能被删除

File类的判断功能:
boolean exists():判断file对象是否存在
boolean isFile():判断file对象是否是文件
boolean isDirectory():判断file对象是否是文件夹
boolean isAbsolute():判断file对象是否是绝对路径
boolean canRead():判断file对象是否可读
boolean canWrite():判断file对象是否可写
boolean isHidden():判断file对象是否隐藏

这些判断功能,主要用在我们需要对文件夹遍历,遍历过程中,需要对文件或者文件夹进行一些操作时,判断,符合条件的,我们才进行实质性的操作代码:
public class FileDemo {    public static void main(String[] args) {        File file = new File("a.txt");        System.out.println("exists:" + file.exists());// true        System.out.println("isFile:" + file.isFile());// true        System.out.println("isDirectory:" + file.isDirectory());// false        System.out.println("isAbsolute:" + file.isAbsolute());// false        System.out.println("canRead:" + file.canRead());// true        System.out.println("canWrite:" + file.canWrite());// true        System.out.println("isHidden:" + file.isHidden());// false    }}

结果:
这里写图片描述
分析:
这里的结果,没有可比性,每个人的文件系统里面是否包含这些文件,决定这里的值。

File类的获取功能1:
String getAbsolutePath():绝对路径
String getPath():相对路径
String getName():文件名称
long length():文件大小,单位是字节
long lastModified():上次修改时间的毫秒值。
代码:

public class FileDemo {    public static void main(String[] args) {        // 需求:指向文件        File file = new File("bbb\\ccc\\a.txt");        System.out.println("getAbsolutePath:" + file.getAbsolutePath());        System.out.println("getPath:" + file.getPath());        System.out.println("getName:" + file.getName());        System.out.println("length:" + file.length());        System.out.println("lastModified:" + file.lastModified());        Date d = new Date(file.lastModified());        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        System.out.println(sdf.format(d));    }}

结果:
这里写图片描述

File类的获取功能2:
public static File[] listRoots():列出可用的系统文件根目录
public String[] list():返回的是指定目录下所有文件或者文件夹的名称数组
public File[] listFiles():返回的是指定目录下所有文件或者文件夹对象数组

这里的获取功能,可以用于遍历某个目录下的所有文件和文件夹,并输出需要的结果

代码:

public class FileDemo {    public static void main(String[] args) {        // public static File[] listRoots()        // File[] rootArray = File.listRoots();        // for (File root : rootArray) {        // System.out.println(root);        // }        // 创建对象        File file = new File("d:\\");        // public String[] list()        // String[] strArray = file.list();        // for (String str : strArray) {        // System.out.println(str);        // }        // public File[] listFiles()        File[] fileArray = file.listFiles();        for (File f : fileArray) {            System.out.println(f.getName());        }    }}

综合应用强调内容

需求:获取指定目录下指定后缀的文件名称:        方法一:先获取指定目录下所有文件或者文件夹的File数组,然后再遍历的时候进行判断。满足条件的就输                出该File的名称。        方法二:直接获取指定目录下满足条件的String(File)数组。然后遍历数组即可。    方法二相对比较方便,但是需要用到FileNameFilter文件名称过滤器类还有带参的list(filter)方法            public String[] list(FileNameFilter filter)代码:
public class FileDemo {    public static void main(String[] args) {        // 封装目录        File file = new File("d:\\");        // 获取满足条件的数组        String[] strArray = file.list(new FilenameFilter() {            @Override            public boolean accept(File dir, String name) {                // 判断是否是文件,是否是以.mp4结尾                // System.out.println(dir + "---" + name);                File file = new File(dir, name); // d:\我的文档                boolean flag = file.isFile();                boolean flag2 = name.endsWith(".mp4");                return flag && flag2;            }        });        // 遍历字符串数组        for (String str : strArray) {            System.out.println(str);        }    }}
0 0
原创粉丝点击