区分io的迷糊 我是新人,学到io了,看了又看想了又想。但是InputStream ,Reader , FileReader , InputStreamReader ,FilterInputStream ,PipedInputStream ,PipedReader这些都是干什么用的。有什么区别啊。我实在分不清楚了。希望有高人能指点一下,说的越详细越好。谢谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 书里讲了这些区别的,至少Java完全探索是讲了的. 想区分的最好方法,是针对每一个具体类,写一段测试代码,自己感受一下,从感性到理性,然后对着API文档,好好看看。一切自明。 就是读写数据啊,有些是按照一个一个byte来读写的,有些是按照一个一个char来读写的 有个nio的教程,你去http://tryosp.cn搜索一下 基本上以下四个类是那些林林总总io类的一个综合抽象 InputStream OutputStream Reader Writer由于读写在功能上是相仿的 可继续浓缩为两大抽象类XxxStream Xxxer那些concrete class都是继承且将以上两个抽象类发扬光大的XxxStream 处理 Byte StreamXxxer 处理 Character Stream具体类也都有各自独到的用处与特色 Stream 结尾 == 字节流非Stream 结尾 == 字符流 wirter/reader和inputstream/outputstream的最大区别在于encode和decode. inputstream/outputstream 直接对byte[]进行操作,不会更改任何信息,原原本本的反应数据内容。 writer/reader在操作时会进行decode/encode. 它会根据你的系统属性file.encoding来decode数据。比如你从文件中读取一行,用reader.readLine()返回的string是经过decode的数据。如果你的文件的encoding不等于你的file.encoding的值,就会产生编码错误。 首先我要谢谢大家,同时还要问一下楼上的大哥,麻烦你encode和decode解释一下好吗?为什么writer和reader它们会进行呢?谢谢你啊。 嘿嘿!encode与decode与字面理解的意义正好相反,它们实际上指的是perl的内在data表现方式,encode通常是指unset perl内部的utf-8 flag,而decode则设置这个flag。所以decode实际上创建utf-8字符串,encode则反之。例如,如下语句设置输出句柄的编码:open my $out, ">:encoding(Latin1)"; #orbinmode(STDOUT, ":encoding(Big5)");希望对你有帮助! 什么操作一定要放在一个方法体中? 求助~!关于反编译的问题! 求救!为何不能导入自定义包啊? 汉字为何不能直接输入到JTable? 求助,关于类之间函数调用的问题 问一个简单问题: if (key!=null && key.equals("TT")) 与if (key.equals("TT") && key!=null)这样的条件是相同的么? 如何设置JTable的列宽度 关与字符与数字问题,都会吧?呵呵 为什么?classpath 关于键盘事件 我想要一本JAVA基础的书。电子版。 getSource() 属于哪个类?
然后对着API文档,好好看看。一切自明。
InputStream OutputStream Reader Writer
由于读写在功能上是相仿的 可继续浓缩为两大抽象类
XxxStream Xxxer
那些concrete class都是继承且将以上两个抽象类发扬光大的
XxxStream 处理 Byte Stream
Xxxer 处理 Character Stream
具体类也都有各自独到的用处与特色
非Stream 结尾 == 字符流
inputstream/outputstream 直接对byte[]进行操作,不会更改任何信息,原原本本的反应数据内容。
writer/reader在操作时会进行decode/encode. 它会根据你的系统属性file.encoding来decode数据。比如你从文件中读取一行,用reader.readLine()返回的string是经过decode的数据。如果你的文件的encoding不等于你的file.encoding的值,就会产生编码错误。
encode与decode与字面理解的意义正好相反,它们实际上指的是perl的内在data表现方式,encode通常是指unset perl内部的utf-8 flag,而decode则设置这个flag。所以decode实际上创建utf-8字符串,encode则反之。
例如,如下语句设置输出句柄的编码:open my $out, ">:encoding(Latin1)"; #or
binmode(STDOUT, ":encoding(Big5)");
希望对你有帮助!