Java中的字符流与字节流


字节流

Java字节流用于执行8位字节的输入和输出操作。虽然有很多与字节流相关的类,但最常用的类是**FileInputStream**和**FileOutputStream**。以下是一个使用这两个类将输入文件复制到输出文件的示例:

示例

import java.io.*;
public class CopyFile {

   public static void main(String args[]) throws IOException {        
      FileInputStream in = null;
      FileOutputStream out = null;

      try {
         in = new FileInputStream("input.txt");
         out = new FileOutputStream("output.txt");
         int c;
         while ((c = in.read()) != -1) {
            out.write(c);
         }
      }finally {
         if (in != null) {
            in.close();
         }
         if (out != null) {
            out.close();
         }
      }
   }
}

现在让我们创建一个名为**input.txt**的文件,其内容如下:

This is a test for copy file.

下一步,编译上述程序并执行它,这将创建一个output.txt文件,其内容与input.txt中的内容相同。所以让我们将上述代码放在CopyFile.java文件中并执行以下操作:

$javac CopyFile.java
$java CopyFile

字符流

Java **字节**流用于执行8位字节的输入和输出操作,而Java **字符**流用于执行16位Unicode的输入和输出操作。虽然有很多与字符流相关的类,但最常用的类是**FileReader**和**FileWriter**。虽然在内部FileReader使用FileInputStream,FileWriter使用FileOutputStream,但主要区别在于FileReader一次读取两个字节,FileWriter一次写入两个字节。

我们可以重写上面的示例,它使用这两个类将输入文件(包含Unicode字符)复制到输出文件:

示例

import java.io.*;
public class CopyFile {

   public static void main(String args[]) throws IOException {
      FileReader in = null;
      FileWriter out = null;

      try {
         in = new FileReader("input.txt");
         out = new FileWriter("output.txt");
         int c;
         while ((c = in.read()) != -1) {
            out.write(c);
         }
      }finally {
         if (in != null) {
            in.close();
         }
         if (out != null) {
            out.close();
         }
      }
   }
}

现在让我们创建一个名为**input.txt**的文件,其内容如下:

This is test for copy file.

下一步,编译上述程序并执行它,这将创建一个output.txt文件,其内容与input.txt中的内容相同。所以让我们将上述代码放在CopyFile.java文件中并执行以下操作:

$javac CopyFile.java
$java CopyFile

更新于:2020年6月18日

9K+浏览量

启动您的职业生涯

完成课程获得认证

开始学习
广告