最常用的传统IO流----File类

概述:java.io.File类是文件或目录路径名的抽象表示,主要用于文件和目录的创建,查找和删除等操作.

特点:

1.一个File类对象代表了一个文件路径名或目录路径名.

2.无论该路径下是否存在文件或目录,都不影响File类对象的创建.

绝对路径和相对路径:

绝对路径:从盘符开始的路径,这是一个完整的路径。

相对路径:相对路径是相对于项目目录的路径.因为系统是根据运行java虚拟机时所在的路径算相对路径.一般从项目启动,相对路径就是相对于项目目录的路径.

构造方法:

File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。

File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。

File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。

File(URI uri) 通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。

常用的方法:

创建文件和目录:

boolean createNewFile() 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。

boolean mkdir() 创建由此抽象路径名命名的目录。

boolean mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。

删除文件和目录:

boolean delete() 删除由此抽象路径名表示的文件或目录。 如果此路径名表示目录,则目录必须为空才能删除。

获取文件和目录的信息:

public long length() 返回由此抽象路径名表示的文件的长度。 如果此路径名表示目录,则返回值未指定。

File getAbsoluteFile() 返回此抽象路径名的绝对形式。

String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。

String getPath() 将此抽象路径名转换为路径名字符串。

String getName() 返回由此抽象路径名表示的文件或目录的名称。

String getParent()返回此抽象路径名的父路径名字符串,如果此路径名没有指定父目录,则返回null。

File getParentFile()返回此抽象路径名的父抽象路径名,如果此路径名没有指定父目录,则返回null。

判断功能:

- public boolean exists() :此File表示的文件或目录是否实际存在。

- public boolean isDirectory() :此File表示的是否为目录。

- public boolean isFile() :此File表示的是否为文件。

遍历功能:

- public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。

- public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。

- public File[] listFiles(FileFilter filter) :返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。如果目录为空,则该数组将为空。 如果此抽象路径名不表示目录,或返回I / O错误,则返回null 。

 

Demo:

File file = new File("demo\\a.txt");
System.out.println(file.getAbsoluteFile());//d:\ideawork\JavaSE2\a.txt
System.out.println(file.getPath());//demo\a.txt,传入的路径
System.out.println(file.getName());//a.txt
System.out.println(file.length());//0,文件不存在

Demo:

File file1 = new File("src\\enday08\\Demo.java");
System.out.println(file1.getAbsoluteFile());//不管传入的是相对路径还是绝对路径,都能获取到File的绝对路径
System.out.println(file1.length());//44
System.out.println(file1.getPath());//打印构造路径 src\enday08\Demo.java
File file2 = new File("d:\\ideawork\\JavaSE2\\src\\enday08\\Demo.java");
System.out.println(file2.getPath());//d:\ideawork\JavaSE2\src\enday08\Demo.java

Demo:

File file1 = new File("src\\enday08\\aaa");
System.out.println(file1.exists());
System.out.println(file1.isDirectory());
System.out.println(file1.isFile());
File file1 = new File("src\\enday08\\c.txt");
file1.createNewFile();
File file2 = new File("src\\enday08\\aaa");
System.out.println(file2.createNewFile());//false,已存在文件夹
File file3 = new File("src\\enday08\\aaa");
System.out.println(file3.mkdir());//false,已存在文件夹,创建失败,返回false
File file4 = new File("src\\enday08\\bbb");
System.out.println(file4.mkdir());//true,文件夹不存在,创建成功

File file5 = new File("src\\enday08\\ccc\\ddd");
System.out.println(file5.mkdir());//false,创建单级目录,不能创建多级目录
System.out.println(file5.mkdirs());//true,创建单级目录或多级目录

Demo:

File file1 = new File("src\\enday08\\c.txt");
System.out.println(file1.delete());//true,删除文件成功
File file2 = new File("src\\enday08\\aaa");
System.out.println(file2.delete());//true,删除空目录成功
//不能删除有子文件和子目录的文件夹

Demo:

File file1 = new File("src\\enday08");
System.out.println(Arrays.toString(file1.list()));//获取当前目录的子文件和子目录

//获取子文件或子文件夹的构造路径的File对象:src\enday08\+文件名/目录名
File[] files = file1.listFiles();
for(File file:files){
    System.out.println(file.getPath());
}
File file = new File("src\\aa");//文件不存在
String[] strs =file.list();
File[] files1 = file.listFiles();
System.out.println(strs);//null
System.out.println(files1);//null

//没有访问权限
File file2 = new File("C:\\Recovery");
System.out.println(file2.length());
System.out.println(file2.list());//null
System.out.println(file2.listFiles());//null

//文件
File file3 = new File("src\\enday08\\Demo.java");
System.out.println(file3.length());
System.out.println(file3.listFiles());//null
System.out.println(file3.list());//null

Demo:

/**
 * 打印一个目录下的所有文件
 * @param file
 */
public static void printDirectory(File file){
    //出口
    if(file.isFile()){
        System.out.println(file.getAbsoluteFile());
        return;
    }
    System.out.println(file.getAbsoluteFile());
    File[] files = file.listFiles();
    for(File f:files){
        if(f.isDirectory()){
            printDirectory(f.getAbsoluteFile());
        }else {
            System.out.println(f.getAbsoluteFile());
        }
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值