黑马程序员技术交流社区
标题:
关于IO的问题
[打印本页]
作者:
郭亚飞
时间:
2011-9-5 02:55
标题:
关于IO的问题
out 是printstream 的一个对象,printstream 是一个字节流,那么调用的print等方法最终在文件上写入的是二进制文件,而字符采用的是Unicode编码,那么为什么调用其println 或者printer方法可以显示字符?请高手指教,我睡觉先,扛不住了:lol
作者:
匿名
时间:
2011-9-5 06:49
建议楼主看一下源码
作者:
匿名
时间:
2011-9-5 08:46
你的疑问有点没看明白,:P 我昨天也看到IO流这一章了,希望对你有帮助哈。。。
1)流是字节序列的抽象概念,文件是数据的静态存储形式,而流是指数据传输时的形态。流类分为两个大类:节点流类和过滤流类(也叫处理流类)。
2)InputStream 与 OutputStream 类
InputStream 类:
程序可以从中连续读取字节的对象叫输入流,在Java 中,用InputStream 类来描述所有输入流的抽象概念。
OutputStream 类:
程序可以向其中连续写入字节的对象叫输出流,在Java 中,用OutputStream 类来描述所有输出流的抽象类。
3)InputStream 类中的 int read()方法是 从输入流中读取一个字节的内容,并把字节的内容以整数的形式返回,如果碰到流的结束就返回-1,如果没有碰到流的结束并且没有内容可读,就会发生堵塞。一个整数是4个字节,read()方法将读入的一个字节内容复制到返回的整数的最低的一个字节。
4)二进制文件和文本文件的区别
在不考虑正负数的情况下,每个字节中的数据可以是0~255之间的任意值,他们在内存中都是以二进制的形式存储,通常所说的文件,就是内存中的一片数据复制到硬盘上的存储形式,文件中的每个字节数据 也都是二进制形式的,文件系统中的每个文件都是二进制文件.
各种文本字符是由一个或多个字节组成的, 其中每个字节的数据不能是任意的,它不能像二进制一样,从0~255之间都可以,而这些要表示字符的字节只能是0~255之间的一些特殊的数字,其它数字是都不可能出现的。
如果一个文件中每个字节,或几个相邻的字节表示成某种字符,就可以称为文本文件,可见文本文件是二进制文件的一种特殊形式,为了与文本文件相区别,把文本文件外的其它文件称为二进制文件。
简单认为, 如果一个文件专用于存储文本字符, 而没有包含字符之外的其它字符,称之为
文本文件,除此之外的文件成为二进制文件。
作者:
匿名
时间:
2011-9-5 13:17
二进制文件是什么??就是一连串0101010100101,那Unicode编码难道不是101010100组成的??一样的。。。只不过你字节流要读两次才相当于一个字符,Unicode的单位就是字符
作者:
匿名
时间:
2011-9-5 13:18
楼主保重身体啊。
作者:
匿名
时间:
2011-9-5 14:08
哦,原来是这样,谢谢童鞋们的答案~
怎么感觉越往后学,越容易犯糊涂呢,脑子反应越来越迟钝了...
作者:
匿名
时间:
2011-9-5 23:15
慢慢适应就好了 适应后会觉得很轻松的
作者:
匿名
时间:
2011-9-10 09:15
标题:
回复 板凳 的帖子
Unicode虽然是字符流,但是并不是 2个低8位一起读得,请参阅【传智播客毕向东Java基础视频教程-day21-08-字符编码-联通.avi】
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2