看看这小段java字符流代码(高手来吧)

来源:百度知道 编辑:UC知道 时间:2024/06/17 05:13:17
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CopyCharacters {
public static void main(String[] args) throws IOException {
FileReader inputStream = null;
FileWriter outputStream = null;
int count = 0;
try {
inputStream = new FileReader("xanadu.txt");
outputStream = new FileWriter("characteroutput.txt");

int c;
while ((c = inputStream.read()) != -1) {
outputStream.write(c);
count++; //第二个试验把这里改成break;
}
} finally {
if (inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
}
System.out.print(count);
}
}

首先,学习字符流这个知识的时候,你要明确一点:reader()这个方法是一个阻塞式的方法,关于阻塞式的方法这里就不详细介绍了、所以当循环开始的时候,int c 从文件中拿是一个一个字节的拿,

其次,你要搞清楚字节与字符的含义:在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间,

你可能受到了FileReader、FileInputStream之间传输的字节数不同的影响。
理论上是那样的,但是在计算机中的存储结构还是要考虑实际的编码的因素;

希望对你有帮助哦,,
祝你好运

字符不一定是2个字节,字符流说明读出来是字符比如:“sdsds”按字符流读出来就是sdsds,而按字节流读出来是10个字节的二进制数据

xanadu.txt里的文件是英文字吧,英文字操作系统存储占1字节,但java读到内存用char存2字节

flash()