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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP