现在的位置: 首页 > 综合 > 正文

Java字节流与字符流

2013年07月04日 ⁄ 综合 ⁄ 共 915字 ⁄ 字号 评论关闭
/**
 ************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
*/

抱歉!评论已关闭.