Java中读写文件时需要用到输入流和输出流,其中字节流和字符流是最基本的两种流。在进行文件操作时,需要根据实际需求选择适当的流进行操作。
字节流使用InputStream和OutputStream,可以读取和写入8 bit字节,适合于处理二进制文件或者文本文件中的字节流。字节流适用于处理图片、音频、视频等文件,但是不适合处理纯文本。
//读取文件中的字节流 try (InputStream in = new FileInputStream("test.txt")) { byte[] bytes = new byte[1024]; int len = -1; while ((len = in.read(bytes)) != -1) { System.out.println(new String(bytes, 0, len)); } } catch (IOException e) { e.printStackTrace(); } //写入字节到文件中 try (OutputStream out = new FileOutputStream("test.txt")) { String str = "Hello World!"; byte[] bytes = str.getBytes(); out.write(bytes); } catch (IOException e) { e.printStackTrace(); }
字符流使用Reader和Writer,可以读取和写入16 bit Unicode字符,适合于处理文本文件。字符流以字符为单位进行操作,可以自动进行字符编码转换,更适合处理中文或者其他Unicode字符集的纯文本。
//读取文件中的字符流 try (Reader reader = new FileReader("test.txt")) { char[] chars = new char[1024]; int len = -1; while ((len = reader.read(chars)) != -1) { System.out.println(new String(chars, 0, len)); } } catch (IOException e) { e.printStackTrace(); } //写入字符到文件中 try (Writer writer = new FileWriter("test.txt")) { String str = "Hello World!"; writer.write(str); } catch (IOException e) { e.printStackTrace(); }
总之,在使用Java进行文件操作时,字节流主要用于处理二进制文件和文本文件中的字节流,字符流主要用于处理纯文本文件。