前言
一、File类
-
概述
- File提供了大量的文件操作:删除文件、修改文件、得到文件修改日期、建立目录、列表文件等等。
- File类可以用来表示文件,也可以用来表示目录。
1.构造方法
- File(String pathname):根据一个路径得到File对象
- File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
- File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
代码示例:
public class file类 {
public static void main(String[] args) {
//File 用来描述文件和目录(文件夹)
//构造方法1.File(String pathname):根据一个路径得到File对象
//绝对路径:带有盘符号
//相对路径:不带盘符号
File file = new File("C:\\Users\\46188\\Desktop\\Java好有趣");
//构造方法2.File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
File file1 = new File("C:\\Users\\46188\\Desktop\\小夏爱Java", "小夏爱java的100条原因.docx");
//构造方法3.File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
File file2 = new File("C:\\Users\\46188\\Desktop\\小夏爱Java");
File file3 = new File(file2, "小夏好好学习java.doc");
}
}
2.创建
1.创建文件
- public boolean createNewFile():创建一个新的文件 如果存在这样的文件,就不创建了
代码示例:
public class 如何创建文件 {
public static void main(String[] args) throws IOException {
//采用的相对路径,代表该项目根目录下,即E:\MyJavaCode2路径下
File file = new File("a.txt");
//创建文件,创建成功,返回布尔类型的true
boolean b = file.createNewFile();
System.out.println(b);
//采用绝对路径
File file1 = new File("E:\\MyJavaCode2\\b.txt");
boolean b1 = file1.createNewFile();
System.out.println(b1);
}
}
2.创建目录
- 创建单级目录
public boolean mkdir() - 创建多级目录
public boolean mkdirs()
代码示例:
public class 创建目录 {
public static void main(String[] args) {
//创建目录
//创建单级目录
File file = new File("C:\\Users\\46188\\Desktop\\小夏真漂亮");
boolean a = file.mkdir();
System.out.println(a);
//创建多级目录
File file1 = new File("C:\\Users\\46188\\Desktop", "第一层\\第二层\\第三层");
boolean aa = file1.mkdirs();
System.out.println(aa);
}
}
3.删除
- public boolean delete():删除文件或者目录
注意:
- 删除目录时,只能删除空目录!
- Java中的删除不走回收站!
4.重命名
- public boolean renameTo(File dest):把文件重命名为指定的文件路径
代码示例:
public class 文件重命名 {
public static void main(String[] args) throws IOException {
//要修改的文件
File f= new File("a.txt");
boolean newFile = f.createNewFile();
//重命名文件
File f1 = new File("b.txt");
//重命名
boolean b = f.renameTo(f1);
System.out.println(b);
}
}
- 注意:
- 如果路径名相同,就是重命名
- 如果路径不同,就是重命名并剪切(File类没有提供剪切功能,所以我们可以使用其进行剪切)
5.判断
- public boolean isFile(): 判断是否是文件
- public boolean isDirectory(): 判断是否是目录
- public boolean exists(): 判断是否存在
- public boolean canRead(): 判断是否可读
- public boolean canWrite(): 判断是否可写
- public boolean isHidden(): 判断是否隐藏
- public boolean isAbsolute(); 判断是否使用的是绝对路径
代码示例:
public class 判断功能 {
public static void main(String[] args) {
File ff = new File("new.txt");
//1.判断其是否为文件
if(ff.isFile()){
System.out.println("是文件");
}
//2.判断其是否为目录
if(ff.isDirectory()){
System.out.println("是目录");
}else{
System.out.println("不是目录");
}
//3.判断文件是否存在
if(ff.exists()){
System.out.println("文件存在");
}
//4.判断文件是否可读
if (ff.canRead()) {
System.out.println("可读");
}
if(ff.canWrite()){
System.out.println("可写");
}else{
System.out.println("不可写");
}
//5.判断文件是否隐藏
if (ff.isHidden()) {
System.out.println("是隐藏文件");
}else{
System.out.println("不是隐藏文件");
}
//判断是否使用的是绝对路径
if (ff.isAbsolute()) {
System.out.println("是绝对路径");
}
}
}
6.获取
代码示例:
public class 获取 {
public static void main(String[] args) {
File ff1 = new File("C:\\Users\\46188\\Desktop\\测试.doc");
//1.获取文件大小,单位是字节
long length = ff1.length();
System.out.println(length);
//2.获取文件名
System.out.println(ff1.getName());
//3.获取父路径,返回的是字符串形式(不灵活)
String parent = ff1.getParent();
System.out.println(parent);
//4.获取父路径,返回文件形式(灵活)
File parentFile = ff1.getParentFile();
System.out.println(parentFile.toString());
//5.获取绝对路径,返回文件形式
File absoluteFile = ff1.getAbsoluteFile();
System.out.println(absoluteFile.toString());
//6.获取总空间大小,单位是字节 1byte=8bit 1kb=1024byte 1M=1024kb
File ff2 = new File("C:\\");
long totalSpace = ff2.getTotalSpace();
System.out.println(totalSpace/1024/1024/1024+"GB");
//7.获取剩余空间 已用空间=总空间-剩余空间
long freeSpace = ff2.getFreeSpace();
System.out.println(freeSpace/1024/1024/1024+"GB");
//8.获取文件最后修改时间,返回是毫秒值
long l = ff1.lastModified();
System.out.println(l);
//转化日期字符串
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
long time=l;
String format =simpleDateFormat1.format(new Date(time));
System.out.println(format);
}
}
代码示例:
public class 获取中较难的方法 {
public static void main(String[] args) {
//1.获取指定目录下所有文件或目录的名称数组,不灵活
File file5 = new File("C:\\Users\\46188\\Desktop\\中国");
String[] list = file5.list();
for (String s : list) {
System.out.println(s);
}
//2.获取指定目录下所有文件或目录的file数组,灵活
File[] files = file5.listFiles();
for (File file : files) {
System.out.println(file.getName()+" "+file.length());
//返回为file数组,可直接指定删除文件
if(file.getName().equals("陕西")){
file.delete();
}
}
}
}
总结
我们学习了Java中的File类中的常用方法,不难也易于理解。后续会出一篇关于该知识点的练习,帮助我们更好的学习如何操作文件。