Java IO流之File类概述
程序员文章站
2024-03-04 15:32:41
...
File
系统和路径分隔符
- 与系统和路径有关分隔符
public class Demo01FIle {
public static void main(String[] args) {
String pathSeparator = File.pathSeparator;
System.out.println(pathSeparator); // 结果是分号 代表是windows系统
String separator = File.separator;
System.out.println(separator); // 结果是反斜杠\ 代表文件名称分隔符
}
}
绝对路径和相对路径
- 绝对路径:是一个完成的路径 以盘符开始
C:\a.txt
C:\Users\itcast\IdeaProjects\a.txt
D:\demo\b.txt
- 相对路径:是一个简化的路径
相对指的是相对于当前项目的根目录(C:\Users\itcast\IdeaProjects\a.txt)
如果相对于当前项目的根目录,路径可以简化书写
C:\Users\itcast\IdeaProjects\demo\123.txt --> 简化为 123.txt(可以省略为根目录)
注意:
- 路径是不区分大小写
- 路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,写2个反斜杠代表1个反斜杠
- 下图是初始化FIle对象的构造器
File (String pathname)
String pathname: 字符串路径名称
路径可以是以文件结尾,也可以是以文件夹结尾
路径可以是相对路径,也可以是绝对路径
路径可以是存在,也可以是不存在
创建File对象,只是把字符串路径封装为FIle对象,不考虑路径真假情况
File file = new File("G:\\1.jpg");
System.out.println(file); // 打印出来的就是 G:\1.jpg
File file2 = new File("G:\\word\\office2003");
System.out.println(file2); // 打印 G:\word\office2003
File(String parent,String child)
String parent: 父路径
String child: 子路径
父路径和子路径,可以单独书写,灵活多变
File file = new File("C:\\","1.jpg");
System.out.println(file); // 打印出来 C:\1.jpg;
File(File parent,String child)
File parent:父路径
String child:子路径
父路径和子路径,可以单独书写,灵活多变
父路径是File类型,可以使用FIle的方法对路径进行一些操作,再使用路径创建对象
File file = new File("C:\\");
File file2 = new File(file,"1.jpg");
System.out.println(file2); // 打印 C:\\1.jpg
常用的方法
获取方法
- public String getAbsolutePath() 返回此File的绝对路径名字符串
- public String getPath() 将此File转换为路径名字符串
- public String getName() 返回由此File表示的文件或目录的名称
- public long length() 返回由此File表示的文件的长度
public static void main(String[] args) {
File file2 = new File("G:\\word\\office2003\\office2003.rar");
System.out.println(file2);
String absolutePath = file2.getAbsolutePath();
System.out.println("文件绝对路径:"+absolutePath);
String path = file2.getPath();
System.out.println("文件构造路径:"+path);
String name = file2.getName();
System.out.println("文件的名字:"+name);
long length = file2.length();
System.out.println("文件长度:"+length+"的字节");
}
注意:
- public long length(): 返回由此File表示的文件的长度
- 文件夹没有大小概念,不能获取文件夹大小
- 如果构造方法中给出的路径不存在,那么length方法返回0
判断方法
- public boolean exists() 返回此File的路径是否存在
- public boolean isDirectory() 此File表示是否为目录
- public boolean isFile() 此FIle表示是否为文件
- public boolean canExecute() 此File是否可以执行路径名的文件
- public boolean canRead() 此File是否可读
- public boolean canWrite() 此File是否可写
public static void main(String[] args) {
File file2 = new File("G:\\word\\office2003\\office2003.rar");
boolean exists = file2.exists();
System.out.println(exists);
boolean canRead = file2.canRead();
System.out.println(canRead);
boolean canWrite = file2.canWrite();
System.out.println(canWrite);
boolean canExecute = file2.canExecute();
System.out.println(canExecute);
boolean directory = file2.isDirectory();
System.out.println(directory);
boolean file = file2.isFile();
System.out.println(file);
}
删除方法
- public boolean createNewFile() 当前仅当具有该名称文件尚不存在时,创建一个新空文件
- public boolean delete() 删除由此File表示的文件或目录
- public boolean mkdir() 创建由此File表示的目录
- public boolean mkdirs() 创建由此FIle表示的目录,包括任何必须但不存在的父目录
注意:
如果createNewFile() 路径不存在,会抛出IOExeception异常
如果delete() 文件/文件夹删除成功,返回true, 文件夹中有内容, 不会删除返回false, 构造方法中路径不存在返回false
遍历文件夹
- public String[] list() 返回一个String数组,表示该File目录中所有子文件或目录
- puublic File[] listFiles() 返回一个File数组,表示该FIle目录中所有子文件或目录
File file = new File("G:\\");
String[] list = file.list();
for (String s : list) {
System.out.println(s + ",");
}
File[] files = file.listFiles();
for (File file1 : files) {
System.out.println(file1.getPath() + "\n");
}
两者都是打印路径下的所有文件或文件夹(只是当前路径下,不包括子路径),也包括所有的隐藏文件