社区
Java SE
帖子详情
请教,关于IO的FileInputStream的疑惑?谢谢。
wangstudyvc
2010-01-21 10:25:58
FileInputStream,读文件按照字节流。但是文件存储时每个字符是2个字节,如果是读英文字母,高8位
肯定是全0,那么循环read读字节时肯定会读到一个字母的高字节即为0值,但是实际循环read时,并没有发现?为什么一个字母的高8位丢失了呢?
...全文
159
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
第一段,有写到:实际上,旧的
IO
包已经用n
io
重新实现过了。。。即使不显示的使用n
io
编写代码,也能从中受益。但是后续没有更多的解释了,我当时想,那么字节流,字符流的缓冲方法,应该调用了channel吧!于是我查看源码,一开始只看
fileinputstream
类,发现read方法直接调用了本地方法,没有channel什么事!!于是我变得困惑,焦虑了,好书应该不会说错啊,...
Java
IO
流(
FileInputStream
,FileOutputStream及File)讲解
File类的使用 在介绍流的概念之前,我们需要知道并且明确File和
IO
流是什么关系。 java.
io
.File类:文件和目录路径名的抽象表示形式 File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。 File对象可以作为参数传递给流的构造函数 File的构造函数 参考在线的jdk文档:https://blog.fondm...
Java
IO
流操作(
FileInputStream
、ByteArrayInputStream、ObjectInputStream)
一、介绍 java的
IO
流操作主要分为字节流和字符流,每个流都会有输入和输出两种类型的流。所有的字节流类都继承自InputStream 和 OutputStream 这两个抽象类,而所有的字符流类是都继承自Reader 和 Writer 这两个抽象类。字节流的处理单位是字节,通常用来处理二进制文件,如音乐、图片文件等。而字符流的处理单位是字符,通常来处理文本。对流进行操作之后,...
Io
流的
FileInputStream
和FileOutputStream的读取和写入
呵呵,今天又学了一个新的知识点。在Java这条路上,我们死磕到底的,呵呵
JDK源码-
IO
系列:
FileInputStream
与BufferedInputStream
FileInputStream
和BufferedInputStream
FileInputStream
:文件字节输入流 BufferedInputStream:缓冲字节输入流 BufferedInputStream是FilterInputStream的子类,而FilterInputStream是InputStream的子类。 FilterInputStream持有一个InputStream in,而当从数据源是文件的时候,也就是InputStream是
FileInputStream
的时候,就是从文件读取字
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章