【Java】文件I/O-文件系统操作

导读

在文件I/O这一节的知识里,对文件的操作主要分为两大类:

☑️针对文件系统进行的操作

☑️针对文件内容进行的操作

针对文件系统进行的操作主要是对Java中的File类进行操作。这篇文章里,博主就来带大家看看Java中针对文件系统的一些常用操作

前置知识

如果还不了解文件路径,博主建议先了解一些关于文件路径的简单知识,链接如下

文件路径-绝对路径与相对路径

操作说明表

下表中列出了常见的针对文件系统的操作,有需要的同学可以自行对照使用⬇️

在表后,博主将对一些重要操作进行代码演示和说明由于博主使用的是Mac系统,下面的演示都会基于Mac系统进行

返回类型 方法名 说明
String getParent() 返回 File 对象的父目录文件路径
String getName() 返回 File 对象的纯文件名称
String getPath() 返回 File 对象的文件路径
String getAbsolutePath() 返回 File 对象的绝对路径
String getCanonicalPath() 返回 File 对象的修饰过的绝对路径
boolean exists() 判断 File 对象描述的文件是否真实存在
boolean isDirectory() 判断 File 对象代表的文件是否是一个目录
boolean isFile 判断File对象代表的文件是否是一个普通文件
boolean createNewFile() 根据 File 对象,自动创建一个空文件。成功创建后返回 true
boolean delete() 根据 File 对象,删除该文件。成功删除后返回 true
void deleteOnExit() 根据 File 对象,标注文件将被删除,删除动作会到JVM运行结束时
String[] list() 返回File 对象代表的目录下的所有文件名
File[] listFiles() 返回 File 对象代表的目录下的所有文件,以 File 对象表示
boolean mkdir() 创建File 对象代表的目录
boolean mkdirs() 创建 File 对象代表的目录,如果必要,会创建中间目录
boolean renameTo(File dest()) 进行文件改名,也可以视为我们平时的剪切、粘贴操作
boolean canRead() 判断用户是否对文件有可读权限
boolean canWrite() 判断用户是否对文件有可写权限

重要操作说明

1、File类的创建

方法名

说明

File(File parent, String child)

根据⽗⽬录 + 孩⼦⽂件路径,创建⼀个新的 File 实例

File(String pathname) 

根据⽂件路径创建⼀个新的 File 实例,路径可以是绝

对路径或者相对路径

File(String parent, String child)

根据⽗⽬录 + 孩⼦⽂件路径,创建⼀个新的 File 实

例,⽗⽬录⽤路径表⽰

我们最常使用第二个方法

File file = new File("/Users/liuwenwen/Desktop/test.txt");

2、文件路径操作 

了解 文件路径-绝对路径与相对路径后,给出下面操作⬇️

返回类型 方法名 说明
String getParent() 返回 File 对象的父目录文件路径
String getName() 返回 File 对象的纯文件名称
String getPath() 返回 File 对象的文件路径
String getAbsolutePath() 返回 File 对象的绝对路径
String getCanonicalPath() 返回 File 对象的修饰过的绝对路径

先按照绝对路径的方式来写

import java.io.File;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("/Users/liuwenwen/Desktop//test.txt");
        System.out.println(file.getParent());
        System.out.println(file.getName());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());

    }
}

 运行结果如下

【Java】文件I/O-文件系统操作_第1张图片

此时返回的路径都是绝对路径

看不出getAbsolutePath()与getCanonicalPath()的区别

将绝对路径改为相对路径后

import java.io.File;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("./test.txt");
        System.out.println(file.getParent());
        System.out.println(file.getName());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }
}

获得的结果是

【Java】文件I/O-文件系统操作_第2张图片

可以看到此时返回的是相对路径

getAbsolutePath()返回的结果即是当前所在路径(IDE项目路径)+ 相对路径

而getCanonicalPath()返回的则是getAbsolutePath()简化版

3、list()与listFiles()

 · list()

运行下面一段代码

import java.io.File;
import java.util.Arrays;

public class demo3 {
    public static void main(String[] args) {
        File file = new File("/Users/liuwenwen/Desktop");
        String[] files = file.list();
        System.out.println(files);
        System.out.println(Arrays.toString(files));
    }
}

得到结果是

【Java】文件I/O-文件系统操作_第3张图片

直接打印数组,得到的是哈希值。因此我们需要用到 Arrays.toString()方法,这样才能打印出我们所要的数组内容

 · listFiles()

运行listFiles()方法

import java.io.File;
import java.util.Arrays;

public class demo3 {
    public static void main(String[] args) {
        File file = new File("/Users/liuwenwen/Desktop");
        File[] files = file.listFiles();
        System.out.println(Arrays.toString(files));
    }
}

得到结果 

【Java】文件I/O-文件系统操作_第4张图片

对比

将两组结果进行对比

[杂, .DS_Store, 写作相关, .localized, 女性主义, test.txt, 学习]
[/Users/liuwenwen/Desktop/杂, /Users/liuwenwen/Desktop/.DS_Store, /Users/liuwenwen/Desktop/写作相关, /Users/liuwenwen/Desktop/.localized, /Users/liuwenwen/Desktop/女性主义, /Users/liuwenwen/Desktop/test.txt, /Users/liuwenwen/Desktop/学习]

可以发现,list()获得的是文件名,listFiles()获得的是文件路径名

4、创建目录 

mkdir()

创建目录操作其实就是创建文件夹操作

运行下面代码

import java.io.File;

public class demo4 {
    public static void main(String[] args) {
        File file = new File("/Users/liuwenwen/Desktop/abc");
        System.out.println(file.mkdir());
    }
}

桌面上多出了abc文件夹,创建目录成功!

【Java】文件I/O-文件系统操作_第5张图片

mkdirs()

如果要创建多级目录,我们则使用mkdirs()方法

import java.io.File;

public class demo4 {
    public static void main(String[] args) {
        File file = new File("/Users/liuwenwen/Desktop/aaa/bbb/ccc");
        System.out.println(file.mkdirs());
    }
}

创建结果如图 

【Java】文件I/O-文件系统操作_第6张图片

 5、重命名

将test.txt文件重命名为test2.txt文件

import java.io.File;

public class demo5 {
    public static void main(String[] args) {
        File srcFile = new File("/Users/liuwenwen/Desktop/test.txt");
        File desFile = new File("/Users/liuwenwen/Desktop/test2.txt");
        System.out.println(srcFile.renameTo(desFile));
    }
}

你可能感兴趣的:(Java,#,文件I/O,java,开发语言,文件)