int len = isr.read(buf);//那么这个read()方法的在电脑上是怎么样运作的,能否解释一下过程,?????它不会读取10个字符吗????编译不会出错吗?????
String str = new String(buf,0,len);
System.out.println(str);
isr.close();
}
public static void writeText()throws IOException
{
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("utf.txt"),"UTF-8");
osw.write("你好");
osw.close();
}
}
复制代码
作者: 焦晨光 时间: 2012-11-7 22:22
char[] buf = new char[10];//这里字符数组长度定义的问题不是很明白,为什么要设定成10,
这个你随意,可以根据需要来定义数组的长度,通常情况下是1024;很少定义为10 除非你要读取的数据真的很少。
//写入用utf-8编码表(一个中文用3个字节表示), 读取时用gbk编码表(一个中文用2个字节表示)
int len = isr.read(buf);//那么这个read()方法的在电脑上是怎么样运作的,能否解释一下过程,?????它不会读取10个字符吗????编译不会出错吗?????
int len = isr.read(buf);执行到这条语句的时候,isr流对象调用它的read方法开始从isr关联的文件中读取数据,如果是空参数的read(),那么只读一个字节便结束
如果是isr.read(buf);传递了一个数组,那么只会在把数组读满或者文件中的数据读完(数组长度大于文件大小),才会结束;
因此 isr.read(buf);它把buf数组读满就结束了 并返回一个int类型的数值,一共读了多少数据;
作者: 蔡汉康 时间: 2012-11-7 22:48
焦晨光 发表于 2012-11-7 22:22
char[] buf = new char[10];//这里字符数组长度定义的问题不是很明白,为什么要设定成10,
这个你随意, ...