在java中文件表示方式
在java中,万物皆对象。所以文件
也不例外,在java中对于文件的可以通过对象的方式进行描述、操作。而java.io
包下有一个File
类,通过File
类来把文件构造为对象在执行其它操作。
构造函数
从父抽象路径名和子路径名字符串创建新的 File实例
File(File parent, String child)
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File(String pathname)
从父路径名字符串和子路径名字符串创建新的 File实例
File(String parent, String child)
通过将给定的 file: URI转换为抽象路径名来创建新的 File实例
File(URI uri)
同构File类把文件构造为java对象
如图,在G:\aa
路径下有一个bb.txt
文件,我们可以通过File类来讲bb.txt
描述为java对象。

代码:
// 通过 File(String pathname) 构造函数创建
File file1 = new File("G:\\aa\\bb.txt");
// 通过 File(File parent, String child) 构造函数创建
File file2 = new File("G:\\aa","bb.txt");
System.out.println(file1.getName());
System.out.println(file2.getName());
执行结果:

创建文件
File file = new File("demo.txt");
boolean flag = file.createNewFile();
System.out.println(flag);
boolean flag = file.createNewFile();
成功返回true,失败false,如果没有给定路径,那么创建的文件是存在当前项目的根目录中。
如果创建的文件在已存在,那么将不会创建,返回false
执行结果:

创建文件夹
// 1.创建文件夹,不可创建多层目录
mkdir();
// 2.创建文件夹,可以创建多层文件夹
mkdirs();
重命名 and 移动
方法
renameTo( new File() )
 通过renameTo()
方法进行重命名操作,如果在同意路径下操作则是进行重命名操作,如果不是在同意路径下操作,那么执行的效果将是移动(剪贴)。
在同一路径下操作
File file = new File("G:\\aa\\bb.txt");
boolean renameTo = file.renameTo(new File("G:\\aa\\cc.txt"));
System.out.println(renameTo);
将G:\\aa\\bb.txt
文件修改为G:\\aa\\cc.txt
,由于都是在G:\\aa
目录中进行操作,所以执行的效果是重命名操作。
执行结果:

在不同路径下操作
File file = new File("G:\\aa\\cc.txt");
boolean renameTo = file.renameTo(new File("G:\\aa\\dd\\dd.txt"));
System.out.println(renameTo);
由于是在不同的目录中操作,所以执行的效果为移动(剪贴),执行完毕后,原来目录中的cc.txt
已经被移动到G:\\aa\\dd\\
目录中,并且修改为dd.txt
名称。
执行结果

删除文件/文件夹
方法:
delete()
删除成功返回 true,失败 false
File类中的判断方法
1.判断是否为目录
isDirectory();
2.判断是否为文件
isFile();
3.判断是否存在
exists();
4.判断是否可读
canRead();
5.判断是否可写
canWrite();
6.判断是否隐藏
isHidden();
注意
canRead()
和 canWrite()
针对的是文件,不是文件夹
- 上述所有的判断方法返回值都是
布尔型
File类中的获取方法
绝对路径: 文件从盘符开始一直到文件/文件夹 的名词。这样的路径称为绝对路径。
相对路径: 相对于当前项目的路径
- 获取绝对路径
getAbsoluteFile();
- 获取相对路径
getPath();
- 获取文件名称
getName();
- 获取长度,单位字节
length();
- 获取最后修改时间,数据为毫秒值
lastModified();
测试代码:
File file = new File("G:\\aa\\dd\\dd.txt");
if(file.exists()) {// 判断文件是否存在
// 获取绝对路径
File absoluteFile = file.getAbsoluteFile();
// 获取相对路径
String path = file.getPath();
// 获取文件名称
String name = file.getName();
// 获取文件字节大小
long length = file.length();
// 获取文件最后修改时间
long lastModified = file.lastModified();
System.out.println("绝对路径:"+absoluteFile);
System.out.println("相对路径:"+path);
System.out.println("文件名称:"+name);
System.out.println("文件字节大小:"+length);
System.out.println("文件最后修改时间(毫秒值):"+lastModified);
}else {
System.out.println("文件不存在");
}
测试结果:

获取指定文件夹下的所有文件和文件夹
1.获取的返回为字符串数组
public String[] list();
2.获取的返回为File类数组
public File[] listFiles();
补充
1.获取文件的扩展名
File file = new File("G:\\aa\\dd\\dd.txt");
file.getName().substring(file.getName().lastIndexOf(".")+1)
2.获取文件的父目录的绝对路径
File file = new File("G:\\aa\\dd\\dd.txt");
file.getParent()