您的位置:

以Java文件流为中心的文件I/O操作

Java文件I/O操作是指对文件进行输入和输出的操作,在Java中很方便地使用了文件I/O操作。文件I/O操作可以分为文件字节输入输出流和文件字符输入输出流两种,而Java的文件I/O操作以文件流为中心。

一、文件字节输入输出流

文件字节输入输出流是用于以字节为单位的I/O操作。文件字节输入输出流使用InputStream和OutputStream这两个类进行操作。其中,InputStream是用于从文件中读入数据,而OutputStream则是将数据写入文件。

以下代码示例演示了如何使用文件字节输入输出流进行文件读写:

import java.io.*;

public class FileStreamTest {
    public static void main(String[] args) {
        try {
            byte[] bytesToWrite = {1, 2, 3};
            FileOutputStream out = new FileOutputStream("test.txt");
            out.write(bytesToWrite);
            out.close();
 
            FileInputStream in = new FileInputStream("test.txt");
            byte[] bytesRead = new byte[2];
            in.read(bytesRead);
            in.close();
 
            for (byte b : bytesRead) {
                System.out.println(b);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

二、文件字符输入输出流

文件字符输入输出流是用于以字符为单位的I/O操作。文件字符输入输出流使用Reader和Writer这两个类进行操作。其中,Reader是用于从文件中读入字符,而Writer则是将字符写入文件。

以下代码示例演示了如何使用文件字符输入输出流进行文件读写:

import java.io.*;

public class FileWriterTest {
    public static void main(String[] args) {
        try {
            String stringToWrite = "Hello, World!";
            FileWriter out = new FileWriter("test.txt");
            out.write(stringToWrite);
            out.close();
 
            FileReader in = new FileReader("test.txt");
            char[] charsRead = new char[5];
            in.read(charsRead);
            in.close();
 
            for (char c : charsRead) {
                System.out.println(c);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

三、文件流的输入输出操作

文件流的输入输出操作指的就是对文件进行读写操作。在进行文件I/O操作时,我们常使用BufferedInputStream和BufferedOutputStream这两个类来进行缓冲操作,提高效率。同时,Java也提供了FileReader和FileWriter这两个类来方便地进行文件的读写操作。

以下代码示例演示了通过文件流的输入输出操作来读写文件,并使用缓存提高效率:

import java.io.*;
 
public class FileReadWriteWithBufferedStream {
    public static void main(String[] args) {
        try {
            FileInputStream fileIn = new FileInputStream("test.txt");
            BufferedInputStream bufIn = new BufferedInputStream(fileIn);
            FileOutputStream fileOut = new FileOutputStream("out.txt");
            BufferedOutputStream bufOut = new BufferedOutputStream(fileOut);
 
            byte[] buffer = new byte[1024];
            int bytesRead = 0;
            while ((bytesRead = bufIn.read(buffer)) != -1) {
                bufOut.write(buffer, 0, bytesRead);
            }
 
            bufOut.flush();
            bufIn.close();
            bufOut.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

四、文件读写操作的异常处理

文件I/O操作具有风险,因为文件可能不存在、权限不足等原因而无法读取或写入。因此,在进行文件读写操作时,我们应该在代码中进行合适的异常处理。Java中提供了IOException和FileNotFoundException两个类来处理文件I/O操作异常。

以下代码示例演示了如何在文件读写操作中处理异常:

import java.io.*;

public class FileReadDemo {
    public static void main(String[] args) {
        File file = new File("test.txt");
        try {
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
            String line = "";
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
            br.close();
            fr.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

五、小结

Java文件I/O操作是Java编程中常用的操作之一。Java文件I/O操作以文件流为中心,包括文件字节输入输出流和文件字符输入输出流两种类型。在文件读写操作中,我们可以使用缓冲区和异常处理技术来提高效率和降低出错率。通过学习文件I/O操作,可以让我们更好地应对Java编程中的文件读写操作。