欢迎访问宙启技术站
智能推送

Java中的文件操作函数解析

发布时间:2023-05-23 10:38:06

文件操作是Java编程中经常需要用到的操作之一,也是Java中的IO流操作的一部分。Java提供了丰富的文件操作函数,这一节将对Java中常用的文件操作函数进行详细解析。

一、File类

Java提供了File类,它用于表示文件系统中的文件或目录。File类提供了多个构造方法来创建文件对象,常用的有如下方法:

1、File(String pathname)

将指定路径名转换为抽象路径名。

例如:

File file = new File("D:\\test\\test.txt");

2、File(String parent, String child)

从父路径名字符串和子路径名字符串创建新的File实例。

例如:

File file = new File("D:\\test", "test.txt");

3、File(File parent, String child)

从父抽象路径名和子路径名字符串创建新的File实例。

例如:

File parent = new File("D:\\test");
File child = new File(parent, "test.txt");

File类提供了很多方法来操作文件和目录,如下:

1、创建文件

在File类中,通过createNewFile()方法可以创建一个新的空文件,如果文件已经存在,此时将不会创建新的文件。

File file = new File("D:\\test\\test.txt");
if (file.createNewFile()) {
    System.out.println("创建文件成功!");
} else {
    System.out.println("文件已经存在!");
}

2、创建目录

通过mkdir()方法可以在指定的目录下创建一个单级目录,如果目录已经存在,则此时不会创建。

File file = new File("D:\\test\\testDir");
if (file.mkdir()) {
    System.out.println("创建目录成功!");
} else {
    System.out.println("目录已经存在!");
}

通过mkdirs()方法可以在指定的目录下创建一个多级目录,如果目录已经存在,则此时不会创建。例如:

File file = new File("D:\\test\\testDir\\subDir");
if (file.mkdirs()) {
    System.out.println("创建目录成功!");
} else {
    System.out.println("目录已经存在!");
}

3、删除文件或目录

在File类中,通过delete()方法可以删除指定的文件或目录,如果删除成功,则返回true,否则返回false。

File file = new File("D:\\test\\test.txt");
if (file.delete()) {
    System.out.println("删除文件成功!");
} else {
    System.out.println("文件不存在或删除失败!");
}

4、修改文件名

在File类中,通过renameTo()方法可以修改指定文件的名称,这个方法可以用来重命名文件或移动文件。

File file = new File("D:\\test\\test.txt");
File destFile = new File("D:\\test\
ew.txt");
if (file.renameTo(destFile)) {
    System.out.println("修改文件名称成功!");
} else {
    System.out.println("修改文件名称失败!");
}

5、获取文件信息

在File类中,通过一系列的方法可以获得文件或目录的相关信息,如下:

a. getName(): 获取文件或目录的名称。

b. getPath(): 获取文件或目录的路径。

c. getParent():获取文件或目录的上一级目录。

d. isFile(): 判断当前File表示的是否是一个文件。

e. isDirectory(): 判断当前File表示的是否是一个目录。

f. length(): 获取文件的大小。

g. lastModified(): 获取最后一次修改时间。

h. list(): 获取目录下的所有文件名数组。

例如:

File file = new File("D:\\test\\test.txt");
System.out.println("文件名称:" + file.getName());
System.out.println("文件路径:" + file.getPath());
System.out.println("文件上一级目录:" + file.getParent());
System.out.println("是否是文件:" + file.isFile());
System.out.println("是否是目录:" + file.isDirectory());
System.out.println("文件大小:" + file.length());
System.out.println("最后一次修改时间:" + file.lastModified());

File dir = new File("D:\\test");
String[] list = dir.list();
System.out.println("目录下包含的文件名:");
for (String name : list) {
    System.out.println(name);
}

二、字节流操作

字节流是Java中另外一个常见的文件操作方式,主要包括InputStream和OutputStream两个类,其中InputStream用来读取文件数据,OutputStream用来输出文件数据。常见的如下:

1、InputStream

InputStream是Java中所有输入流的父类,提供了read()方法和read(byte[] b)方法来读取数据。

a. read(): 从输入流中读取一字节的数据。

例如:

FileInputStream fis = new FileInputStream("D:\\test\\test.txt");
int b;
while ((b = fis.read()) != -1) {
    System.out.print((char) b);
}
fis.close();

b. read(byte[] b): 从输入流中读取数据到字节数组b中。

例如:

FileInputStream fis = new FileInputStream("D:\\test\\test.txt");
byte[] b = new byte[3];
int len;
while ((len = fis.read(b)) != -1) {
    System.out.print(new String(b, 0, len));
}
fis.close();

2、OutputStream

OutputStream是Java中所有输出流的父类,提供了write()方法和write(byte[] b)方法来输出数据。

a. write(int b): 将一个字节写入输出流中。

例如:

FileOutputStream fos = new FileOutputStream("D:\\test\\test.txt");
fos.write('a');
fos.close();

b. write(byte[] b): 将字节数组b中的数据写入输出流中。

例如:

FileOutputStream fos = new FileOutputStream("D:\\test\\test.txt");
String str = "Hello, world!";
byte[] b = str.getBytes();
fos.write(b);
fos.close();

三、字符流操作

字符流是一种更高层次的文件操作方式,主要包括Reader和Writer两个类。Reader和Writer类提供了一些读写字符的方法,可以让我们更方便地操作文本文件。常见的如下:

1、Reader

Reader是Java中所有读取字符流的父类,提供了read()方法和read(char[] cbuf)方法来读取数据。

a. read(): 从输入流中读取一个字符。

例如:

FileReader fr = new FileReader("D:\\test\\test.txt");
int c;
while ((c = fr.read()) != -1) {
    System.out.print((char) c);
}
fr.close();

b. read(char[] cbuf): 从输入流中读取数据到字符数组cbuf中。

例如:

FileReader fr = new FileReader("D:\\test\\test.txt");
char[] cbuf = new char[3];
int len;
while ((len = fr.read(cbuf)) != -1) {
    System.out.print(new String(cbuf, 0, len));
}
fr.close();

2、Writer

Writer是Java中所有写入字符流的父类,提供了write()方法和write(char[] cbuf)方法来输出数据。

a. write(int c): 将一个字符写入输出流中。

例如:

FileWriter fw = new FileWriter("D:\\test\\test.txt");
fw.write('a');
fw.close();

b. write(char[] cbuf): 将字符数组cbuf中的数据写入输出流中。

例如:

FileWriter fw = new FileWriter("D:\\test\\test.txt");
String str = "Hello, world!";
char[] cbuf = str.toCharArray();
fw.write(cbuf);
fw.close();

四、使用缓冲流

在进行文件读写时,由于磁盘写入速度较慢,为了提升读写效率,可以使用缓冲流来减少IO操作次数。在Java中,提供了BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter等缓冲流类。

1、BufferedInputStream和BufferedOutputStream

BufferedInputStream和BufferedOutputStream是Java中提供的缓冲字节流类,可以用来快速读写字节数据。使用时只需要将字节流对象作为参数传入,就可以创建一个缓冲流对象。

例如:

`java

FileInputStream fis = new FileInputStream("D:\\test\\test.txt");

Buffer