黑马程序员技术交流社区
标题:
关于操作转换流一个细节的问题
[打印本页]
作者:
我为你着迷
时间:
2014-12-22 13:49
标题:
关于操作转换流一个细节的问题
本帖最后由 我为你着迷 于 2014-12-22 13:51 编辑
import java.io.*;
class EncodeStream
{
public static void main(String[] args) throws IOException
{
//writeText();
readText();
}
public static void readText() throws IOException
{
InputStreamReader isr=new InputStreamReader(new FileInputStream("utf.txt"),"utf-8");
char[] buf=new char[10];
int len=isr.read(buf);
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();
}
}
复制代码
大家好 我想问下这句话char[] buf=new char[10]; 为什么用的是字符数组呢 而不是字节数组呢?byte[] buf=new byte[10];
这不是在操作字节读取流对象呢? 哪位帮小弟解答下 好吗 黑马币无限给你!
作者:
huoxy
时间:
2014-12-22 14:10
已经用InputStreamReader将字节流转换为字符流了,并且指定了编码表,所以可以定义char[]缓冲区,以字符形式读取。
作者:
wtjohn
时间:
2014-12-22 14:10
读取的是文本文件啊
作者:
duluhua
时间:
2014-12-22 14:20
1.不知道你注意到这行代码没,int len=isr.read(buf); 这句话的含义是把从文件中读取出来的内容放到一个字符数组中,参数是char[] 而不是byte[]。这是最为主要的原因。后面的方法需要char【】 所以就得给传char[]
2.我之前也没考虑过这个问题,也是现找的答案。还有一点就是,byte[]是字节数组,每个字节存储数据的大小是非常小的-128至127。而从文件中读取出来的数据,有数字、字符、特殊符号等,其大小可能超出byte的存储范围。
3.最重要的是,第二条是我自己这么理解的,第一条应该是最为准确的。
4.你是怎么理解的?
作者:
我为你着迷
时间:
2014-12-22 17:07
duluhua 发表于 2014-12-22 14:20
1.不知道你注意到这行代码没,int len=isr.read(buf); 这句话的含义是把从文件中读取出来的内容放到一个字 ...
我!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2