Java拾贝第十一天——IO之File类

Java拾贝不建议作为0基础学习,都是本人想到什么写什么

Java中提供了IO包以操控计算机中的文件

File类

在整个IO包中,与文件相关的类就是File类。使用它可以进行创建或删除文件

因为File类是个普通类,初始化它需要调用其有参构造

 public File(String pathname){//传参为文件路径
 }

使用构造方法初始化File类后,还需要使用其定义的若干方法。File类常用方法如下:

方法或属性 方法类型 描述
public static final String separator 常量 路径的分隔符
public boolean createNewFile() throws IOException 普通方法 创建新文件
public boolean delete() 普通方法 删除文件
public boolean exists() 普通方法 返回文件是否存在
public boolean isDirectory() 普通方法 返回File是否是目录
public boolean isFile() 普通方法 返回File是否是一个文件
public long length() 普通方法 返回文件大小(单位字节)
public boolean mkdir() 普通方法 创建目录
public String[] list() 普通方法 返回指定路径的所有文件名
public String[] listFiles() 普通方法 返回指定路径的所有文件名(附带路径)

createNewFile()

File类初始化后可以调用其创建一个新文件。该方法会抛出异常
栗子:

    public static void main(String[] args) {
        File file = new File("D:\\IOtest\\text.txt");
		//D盘 IOtest文件夹(也称目录) text.txt文件
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

使用转义符\\以实现一个\的意思

不同的操作系统其路径的目录分隔符也会不同

Windows使用反斜杠 \ 表示目录的分隔符
Linux使用正斜杠 / 表示目录的分隔符

因为Java可以运行在多平台上,所以分隔符并不固定,建议使用Java提供的常量。

public static final String separator

访问方式为:File.separator

至此,修改栗子如下:

    public static void main(String[] args) {
        File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
		//每一个常量都代表一个分隔符
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

开发时,可能使用的是Windows系统,而部署项目可能在其他的系统,所以建议分隔符一定使用File.separator

delete()

删除指定路径的文件
栗子:

    public static void main(String[] args) {
        File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
        file.delete();
    }

exists()

建议对文件进行操作时优先判断文件是否存在。
栗子:

    public static void main(String[] args) {
        File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
        if (file.exists()) {
            file.delete();//文件存在则删除
        }
    }

mkdir()

创建文件夹
栗子:

    public static void main(String[] args) {
        File file = new File("D:" + File.separator + "IOtest2";
        file.mkdir();
    }

若文件夹不存在无法直接创建新文件。

栗子:

    public static void main(String[] args) {
        File file = new File("D:" + File.separator + "IOtest3" + File.separator + "text.txt");
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

程序运行结果:

java.io.IOException: 系统找不到指定的路径。
	at java.io.WinNTFileSystem.createFileExclusively(Native Method)
	at java.io.File.createNewFile(File.java:1023)
	at moudle2.Test11.main(Test11.java:10)

isDirectory()

判断File是否是一个目录(也称文件夹)
栗子:

    public static void main(String[] args) {
        File file = new File("D:" + File.separator + "IOtest2";
        file.mkdir();
        file.isDirectory();//T
    }

isFile()

判断File是否是一个文件
栗子:

    public static void main(String[] args) {
        File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        file.isFile();//T
    }

length()

返回文件大小,以字节为单位。

单位换算:

8b=1B	8位=1字节	小b是比特(bit) 大B是字节(Byte)
1024B=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB

栗子:

    public static void main(String[] args) {
        File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
        System.out.println(file.length());
    }

程序运行结果:

10
//我打开文件随便敲了一些字母上去👉asdsadassd

list()

返回指定路径的所有文件名
栗子:

    public static void main(String[] args) {
        File file = new File("D:" + File.separator);
        String[] list = file.list();
        for (String s : list) {
            System.out.println(s);
        }
    }

程序运行结果:

aDrive
AE
Battle.net
Bgame
Code
DirectX_Repair(Enhanced_Edition)
...

listFiles()

以路径的形式返回指定路径所有文件名。
栗子:

    public static void main(String[] args) {
        File file = new File("D:" + File.separator);
        File[] files = file.listFiles();
        for (File f : files) {
            System.out.println(f);
        }
    }

程序运行结果:

D:\aDrive
D:\AE
D:\Battle.net
D:\Bgame
D:\Code
D:\DirectX_Repair(Enhanced_Edition)
...
posted @ 2023-10-25 12:40  rowbed  阅读(2)  评论(0编辑  收藏  举报