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

Java中的文件操作函数:如何读写文件?

发布时间:2023-06-21 10:36:34

Java中的文件操作函数是一组用于读写文件的API,用于处理文件和目录。Java中提供了多种读写文件的方式,包括字节流和字符流、文件读写、缓冲和无缓冲等方式。本文将介绍Java中文件操作函数及其用法。

一、文件读写方式

1. InputStream/OutputStream:字节流,用于二进制文件的读写操作,具体实现类包括FileInputStream/FileOutputStream和ByteArrayInputStream/ByteArrayOutputStream等。

2. Reader/Writer:字符流,用于字符文件的读写操作,具体实现类包括FileReader/FileWriter和StringReader/StringWriter等。

3. RandomAccessFile:随机访问文件,允许程序可以在文件任意位置读写数据,比如可以在文件中寻找或者替换记录,在文件的任意偏移位置添加记录等。

4. BufferedReader/BufferedWriter:缓存流,提供了缓存机制,可以提高读写效率,具体实现类包括BufferedInputStream/BufferedOutputStream和BufferedReader/BufferedWriter等。

二、文件操作函数的使用

1. 文件读取:

Java的文件读取可以使用FileInputStream和FileReader两个类,其中FileInputStream是字节流,FileReader是字符流。

FileInputStream示例代码:

String fileName = "文件路径";
FileInputStream inputStream = new FileInputStream(fileName);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
    // 处理读取到的数据
}
inputStream.close();

读取文件时,可以使用字节数组作为缓存读取文件内容,每次读取的数据都会存放到这个数组中,直到文件结尾。

FileReader示例代码:

String fileName = "文件路径";
FileReader reader = new FileReader(fileName);
char[] buffer = new char[1024];
int len = 0;
while ((len = reader.read(buffer)) != -1) {
    // 处理读取到的数据
}
reader.close();

读取文本文件时,使用FileReader类更为方便。

2. 文件写入:

Java的文件写入可以使用FileOutputStream和FileWriter两个类,其中FileOutputStream是字节流,FileWriter是字符流。

FileOutputStream示例代码:

String fileName = "文件路径";
FileOutputStream outputStream = new FileOutputStream(fileName);
String content = "写入文件内容";
outputStream.write(content.getBytes());
outputStream.close();

写入文件时,需要将字符串转换为字节数组,通过write()方法写入文件。

FileWriter示例代码:

String fileName = "文件路径";
FileWriter writer = new FileWriter(fileName);
String content = "写入文件内容";
writer.write(content);
writer.close();

写入文本文件时,使用FileWriter类更为方便。

3. 文件拷贝:

Java的文件拷贝可以使用输入流和输出流实现,读取文件内容并向目标文件中输出内容。

String sourceFile = "源文件路径";
String targetFile = "目标文件路径";
InputStream inputStream = new FileInputStream(sourceFile);
OutputStream outputStream = new FileOutputStream(targetFile);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
    outputStream.write(buffer, 0, len);
}
inputStream.close();
outputStream.close();

通过创建输入流和输出流,实现从源文件读取数据并向目标文件写入数据。

4. 文件复制:

Java的文件复制可以使用File类提供的方法实现,包括copy()和copyTo()方法。

String sourceFile = "源文件路径";
String targetFile = "目标文件路径";
File source = new File(sourceFile);
File target = new File(targetFile);
FileUtils.copyFile(source, target);

通过使用FileUtils.copyFile()方法,实现对文件的复制。这个方法的实现需要引入commons-io包。

5. 文件删除:

Java的文件删除可以使用File类提供的方法实现,包括delete()和deleteOnExit()方法。

String file = "文件路径";
File f = new File(file);
if (f.exists()) {
    f.delete();
}

通过使用delete()方法,实现对文件的删除,这个方法将直接删除文件。如果只想在程序结束时删除文件,可以使用deleteOnExit()方法。

6. 文件遍历:

Java提供了遍历文件目录的方法,包括list()、listFiles()和walk()方法。

String fileDirectory = "文件夹路径";
File file = new File(fileDirectory);

// 列出当前目录下的所有文件和目录
String[] fileList = file.list();
for (String fileName : fileList) {
    System.out.println(fileName);
}

// 列出当前目录下的所有文件和目录及其子目录下的所有文件和目录
File[] files = file.listFiles();
for (File f : files) {
    if (f.isDirectory()) {
        System.out.println("目录:" + f.getAbsolutePath());
    } else {
        System.out.println("文件:" + f.getAbsolutePath());
    }
}

// 遍历当前目录下的所有文件和目录及其子目录下的所有文件和目录
Files.walk(Paths.get(fileDirectory))
        .forEach(filePath -> {
            if (Files.isDirectory(filePath)) {
                System.out.println("目录:" + filePath);
            } else {
                System.out.println("文件:" + filePath);
            }
        });

通过list()方法列出所有文件名,通过listFiles()方法列出File对象,通过walk()方法遍历文件树。

三、总结

Java提供了多种读写文件的方式,包括字节流和字符流、文件读写、缓冲和无缓冲等方式。文件操作函数的使用需要根据具体的应用场景来选择,Java提供的文件操作函数可以满足绝大部分需求。在进行文件操作时,应该注意文件的打开和关闭操作,避免出现文件打开后无法关闭的情况。