社区
Java SE
帖子详情
字符流中read方法返回值是int,为什么输出是char?
Quester-King
2012-03-19 05:10:51
字符流中read方法返回值是int,当我从文本中读取是,返回int值,到末尾返回-1
可是为什么我把读入的数据再输出到另一个文本中还是char?
比如A的内容:
java练习
那把A读入在输出到B,B的内容还是:
java练习
为什么B的内容不是一串数字??
...全文
522
7
打赏
收藏
字符流中read方法返回值是int,为什么输出是char?
字符流中read方法返回值是int,当我从文本中读取是,返回int值,到末尾返回-1 可是为什么我把读入的数据再输出到另一个文本中还是char? 比如A的内容: java练习 那把A读入在输出到B,B的内容还是: java练习 为什么B的内容不是一串数字??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
beiouwolf
2012-03-20
打赏
举报
回复
Reader接口和Stream接口的区别只是一个以byte为基准,一个以char为基准而已
stream返回的是单个byte
reader返回的是单个char
reader只是帮你组织了byte[]到char的过程
接口意义上来说 是一样的
Quester-King
2012-03-20
打赏
举报
回复
[Quote=引用 5 楼 abstruct 的回复:]
read的时候那read读取的就是一个char,但是char有对应assic码,而read的时候都会把char转成对象应assic码,所以也就是int型的了,而在写的时候也会还原成原来的char。
如果你直接打印那么就是该char的assic码了。
[/Quote]
非常感谢,我自己看了源代码,看了注释,加上你们的解释,差不多懂了。!谢谢!
安特矮油
2012-03-20
打赏
举报
回复
read的时候那read读取的就是一个char,但是char有对应assic码,而read的时候都会把char转成对象应assic码,所以也就是int型的了,而在写的时候也会还原成原来的char。
如果你直接打印那么就是该char的assic码了。
Quester-King
2012-03-20
打赏
举报
回复
[Quote=引用 2 楼 jiakai0419 的回复:]
简单来说
当你的I/O流读文件的时候,文件里面的内容被编码成二进制字节序列。
然后你又把你读到的二进制字节序列,原样不动的输出到文件中。
文件按照刚才编码的字符集,又把二进制字节流解码成了字符。
这就是上面的简单过程。
[/Quote]
我是比较疑惑字符流中的read方法,而不是字节流的。
Quester-King
2012-03-20
打赏
举报
回复
[Quote=引用 1 楼 beiouwolf 的回复:]
这个你得先去好好学学IO基础
不知道你的具体环境和代码,简单的假设一下
你用的InputStream和OutputStream
read方法有2种,一种是每次读取一个字节的read()方法,这个方法返回的是读取到的当前字节数据
一种是读取n个字节,放入byte[]缓冲区的双缓冲读写,返回的是读取到的字节长度
估计你用的是非缓冲的单字节读取,那么你读取完以后,用os输出时,同样是作为字节……
[/Quote]
可是我是说字符流中Reader的read方法,不是以字节为单位的字节流啊
jiakai0419
2012-03-19
打赏
举报
回复
简单来说
当你的I/O流读文件的时候,文件里面的内容被编码成二进制字节序列。
然后你又把你读到的二进制字节序列,原样不动的输出到文件中。
文件按照刚才编码的字符集,又把二进制字节流解码成了字符。
这就是上面的简单过程。
beiouwolf
2012-03-19
打赏
举报
回复
这个你得先去好好学学IO基础
不知道你的具体环境和代码,简单的假设一下
你用的InputStream和OutputStream
read方法有2种,一种是每次读取一个字节的read()方法,这个方法返回的是读取到的当前字节数据
一种是读取n个字节,放入byte[]缓冲区的双缓冲读写,返回的是读取到的字节长度
估计你用的是非缓冲的单字节读取,那么你读取完以后,用os输出时,同样是作为字节数据输出的,所以两者内容当然一样
至于你说的为什么不是一串数字...这个...字节是字节,字节不等于字符串,任何数据的底层都是字节,为什么你会得出写到B的内容是一串数字这个结论
详解Java 字节流的
read
()
方法
返回
int
型而非byte型的原因
我们都知道java
中
io操作分为字节流和
字符流
,对于字节流,顾名思义是按字节的方式读取数据,所以我们常用字节流来读取二进制流(如图片,音乐等文件)。问题是为什么字节流
中
定义的
read
()
方法
返回值
为
int
类型呢?既然它一次读出一个字节数据为什么不返回byte类型呢? 网上的说法不能说它是错误的,只是我感觉没有解释清楚,接下来我们以FileInputStream /FileOutputStream和...
Java
中
字节流和
字符流
的
read
()
方法
为什么返回的值是
int
类型
Java
中
字节流和
字符流
的
read
()
方法
为什么返回的值是
int
类型 /* * 字节流和
字符流
的
read
()
方法
为什么返回的是
int
类型?而且为什么用-1作为判断是不是流末尾? */ package cn.itcast.day_16; import java.io.FileInputStream; import java.io.FileNotFoun
Java 编程下 IO
中
的输入流的
read
()
方法
返回值
为什么是
int
值
Java 下 IO
中
FileReder 和 FileInputStream 分别是以字符和字节的形式来完成数据的读取的,然而
返回值
确是
int
类型的数据,这样做的核心目的只是要取到到一个
int
类型下的 -1 来表示数据流的末尾。为什么要这样做?又是怎么实现的呢? 首先看 FileReder : File
Read
er fr = new File
Read
er("src.txt");...
java
中
的
read
函数
返回值
,InputStream和InputStream
Read
er的
read
返回值
为什么是
int
而不是byte...
我们在学习Java IO流的时候,无论是字节流InputStream类还是
字符流
Read
er类,
read
方法
及其重载函数都是经常使用到的
方法
。InputStream类的
read
及重载
方法
:在“Java核心技术卷二 高级特性”一书
中
,是这样描述InputStream类的
read
方法
的:abstract
int
read
()从数据
中
读入一个字节,并返回该字节。这个
read
方法
在碰到输入流的结尾时返回-...
字符流
中
read
()
方法
返回值
的问题
图片来自知乎。。 这里的n表示文件
中
字符的长度,当读到结尾即为-1,然后用String()
方法
,转换为字符串
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章