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

导读

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

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

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

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

前置知识

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

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

操作说明表

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

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

返回类型方法名说明
StringgetParent()返回 File 对象的父目录文件路径
StringgetName()返回 File 对象的纯文件名称
StringgetPath()返回 File 对象的文件路径
StringgetAbsolutePath()返回 File 对象的绝对路径
StringgetCanonicalPath()返回 File 对象的修饰过的绝对路径
booleanexists()判断 File 对象描述的文件是否真实存在
booleanisDirectory()判断 File 对象代表的文件是否是一个目录
booleanisFile判断File对象代表的文件是否是一个普通文件
booleancreateNewFile()根据 File 对象,自动创建一个空文件。成功创建后返回 true
booleandelete()根据 File 对象,删除该文件。成功删除后返回 true
voiddeleteOnExit()根据 File 对象,标注文件将被删除,删除动作会到JVM运行结束时
String[]list()返回File 对象代表的目录下的所有文件名
File[]listFiles()返回 File 对象代表的目录下的所有文件,以 File 对象表示
booleanmkdir()创建File 对象代表的目录
booleanmkdirs()创建 File 对象代表的目录,如果必要,会创建中间目录
booleanrenameTo(File dest())进行文件改名,也可以视为我们平时的剪切、粘贴操作
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限

重要操作说明

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、文件路径操作 

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

返回类型方法名说明
StringgetParent()返回 File 对象的父目录文件路径
StringgetName()返回 File 对象的纯文件名称
StringgetPath()返回 File 对象的文件路径
StringgetAbsolutePath()返回 File 对象的绝对路径
StringgetCanonicalPath()返回 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());

    }
}

 运行结果如下

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

看不出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());
    }
}

获得的结果是

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

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));
    }
}

得到结果是

直接打印数组,得到的是哈希值。因此我们需要用到 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));
    }
}

得到结果 

对比

将两组结果进行对比

[杂, .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文件夹,创建目录成功!

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());
    }
}

创建结果如图 

 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));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙河板混

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值