/**
************Java字节流与字符流
* 1、测试环境:Fedora("in.txt"文件的编码为utf-8,“中”占3个字节)
* 2、Linux下如何查看文件编码格式:vim下[:set fileencoding]
* 3、以单字节十六进制形式查看文件:od -t x1 in.txt
*/
/* "in.txt"内容
中abcd中
*/
//字节流:read()每次读取1 byte
//读3次才能读取1个“中”
import java.io.*;
class Test
{
public static void main(String[] args) throws IOException
{
FileInputStream in = new FileInputStream("in.txt");
FileOutputStream out = new FileOutputStream("out.txt");
int c;
for(int i = 0; i < 3; i++)
{
c = in.read();
System.out.println(c);
out.write(c);
}
in.close();
out.close();
}
}
//字符流:read()每次读取1 character(Java在这里显得比较“智能”,不管是英文字符(1个字节),还是中文字符(utf-8“中”占3个字节))
import java.io.*;
class Test2
{
public static void main(String[] args) throws IOException
{
FileReader in = new FileReader("in.txt");
FileWriter out = new FileWriter("out.txt");
int c;
for(int i = 0; i < 1; i++)
{
c = in.read();
System.out.println(c);
out.write(c);
}
in.close();
out.close();
}
}
/**
* 进一步实验证明,无论是Linux(文本文件默认格式为utf-8),还是Windows(文本文件默认格式为latin1),字符流的read()都是读取1 character,字节流的read()都是读取1 byte
*/