社区
Java SE
帖子详情
请教,关于IO的FileInputStream的疑惑?谢谢。
wangstudyvc
2010-01-21 10:25:58
FileInputStream,读文件按照字节流。但是文件存储时每个字符是2个字节,如果是读英文字母,高8位
肯定是全0,那么循环read读字节时肯定会读到一个字母的高字节即为0值,但是实际循环read时,并没有发现?为什么一个字母的高8位丢失了呢?
...全文
158
6
打赏
收藏
请教,关于IO的FileInputStream的疑惑?谢谢。
FileInputStream,读文件按照字节流。但是文件存储时每个字符是2个字节,如果是读英文字母,高8位 肯定是全0,那么循环read读字节时肯定会读到一个字母的高字节即为0值,但是实际循环read时,并没有发现?为什么一个字母的高8位丢失了呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
NS_XK
2010-01-21
打赏
举报
回复
FileReader读取时,读取字符,并不局限在2个字节。根据字符读取,可能是1个字节或者两个字节。
bayougeng
2010-01-21
打赏
举报
回复
是的,取决于编码。
其实读文本文件完全没必要用字节流。字符流会帮你处理这些繁杂的操作。
transray
2010-01-21
打赏
举报
回复
学习了 不错 谢谢了
wangstudyvc
2010-01-21
打赏
举报
回复
2楼所言,理解。
通过十六进制查看,确实一个英文是一个字节表示。
但是我还使用FileReader字符流。它是一次读取一个字符(2个字节)。循环read后,读中文时,是读2个字节,读取中文正常。但是读取英文,如果再读2个字节肯定又不对了?难道读英文又成了读1个字节吗。有些不解?
ChDw
2010-01-21
打赏
举报
回复
但是文件存储时每个字符是2个字节,如果是读英文字母,高8位肯定是全0,
----
错误!这个是需要根据文件格式决定的。如果文件格式是GBK(中文系统的默认格式)中文占用2个字符,英文只占用1个,如果是UTF-8,中文占用3个,英文占用1个,如果是Unicode则都占用2个
你可以使用UltraEdit中的十六进制模式看看你的文件。
所以根本不存在丢失的问题
阿_布
2010-01-21
打赏
举报
回复
文件存储时每个字符是2个字节
要看文件时用什么编码保存的,gbk,utf-8英文是一个字节保存的,unicode都是两个字节。
关于 Java新/旧
IO
已经用channel重写
本文探讨了《Java编程思想》中关于新旧
IO
包整合的概念,详细解析了即使在未显式使用N
IO
的情况下,传统
IO
如字节流、字符流如何受益于N
IO
的优化。通过源码分析,揭示了
FileInputStream
的read方法已采用N
IO
缓冲技术,解决了初学者对Java
IO
体系理解上的
疑惑
。
Java
IO
流(
FileInputStream
,FileOutputStream及File)讲解
本文深入讲解Java中的
IO
流概念,包括File类的使用、输入输出流的分类与操作,以及如何利用
FileInputStream
和FileOutputStream进行文件读写。通过具体代码示例,帮助读者理解
IO
流在实际应用中的作用。
Java
IO
流操作(
FileInputStream
、ByteArrayInputStream、ObjectInputStream)
本文深入讲解了Java中的
IO
流操作,包括字节流和字符流的使用,详细介绍了
FileInputStream
、ByteArrayInputStream和ObjectInputStream的原理及应用实例。
Io
流的
FileInputStream
和FileOutputStream的读取和写入
本文详细介绍了Java中的
Io
流,特别是
FileInputStream
和FileOutputStream的使用。通过字节流进行文件的读写操作,包括读取文本文件、写入文件的基本步骤,以及各类常用方法和构造函数的解释。文中还提供了一个实例,演示了如何将一个文本文档的内容复制到另一个文件中。
JDK源码-
IO
系列:
FileInputStream
与BufferedInputStream
本文详细探讨了BufferedInputStream和
FileInputStream
的区别与用法。BufferedInputStream通过内部缓冲区提高读取效率,减少了对文件的直接
IO
操作,而
FileInputStream
则是直接进行文件读取。在读取大量数据时,BufferedInputStream通常表现出更好的性能,但在小规模读取或一次性读取整个文件时,两者性能差异不大。总结了两者在不同场景下的优劣,并提供了实际测试的观察结果。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章