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编程中的文件读写操作。