社区
Java SE
帖子详情
字符流和字节流read方法返回的int值有什么区别
劉強東
2016-08-17 07:59:31
字符流复制文件异常的原理是什么
希望能详细讲字节和字符之间的转换
...全文
890
8
打赏
收藏
字符流和字节流read方法返回的int值有什么区别
字符流复制文件异常的原理是什么 希望能详细讲字节和字符之间的转换
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
劉強東
2016-08-19
打赏
举报
回复
原码反码和补码是相对于二进制而言 正数的原码既补码, 负数的反码是二进制原码取反 反码+1既补码
肃穆丶
2016-08-19
打赏
举报
回复
字节读取int 返回 0 到 255 范围内的 int 字节值。如果因已到达流末尾而没有可用的字节,则返回值 -1。 字符读取int 作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1
NewMoons
2016-08-18
打赏
举报
回复
我先问问楼主,你知道什么是计算机原码、反码、补码吗?并明确他们之间的转换关系? 搞清这个问题,我在给你讲后面的东西。
劉強東
2016-08-17
打赏
举报
回复
### 字符流和字节流的区别 #### 编码表 - ASCII码表: 中中文占两个字节 Unicode码表: 中所有符号占两个字节, 包括符号和字母 - #### 读取方式`重载read()` - 字符流 - 单字符 - 读取字节 - 返回字节, 'a'的字节是97 - 字节流 - 单字节 - 根据码表对应字节数来决定读取多少个字节,然后补全至八位int值 - 读取的字符 - 代码分析 ```java class Test { public static void main(String[] args) throws IOException { FileInputStream fi = new FileInputStream("read.txt"); // 字节流读取'你' int temp = fi.read(); System.out.println(temp); // 结果为 196 FileReader fr = new FileReader("read.txt"); // 字符流读取'你' int t emp2 = fr.read(); System.out.println(temp2); // 结果为 20320 } } ``` #### 写入方法`重载write()` - 字节流 - 传入字节的int值 - 写入字节 - 字符流 - 传入字符 - 根据平台默认码表拆分字节写入文件 #### 字节流输出字符异常 - 不能确定多少个字节表示一个字符, 例如不同的平台默认字符集码表,unicode编码是2个字节一个字符, 而utf-8编码是3个字节一个字符 #### 字符流复制文件异常 - 按照平台默认字符集读取2个字节, 写入的时候查码表没有找到对应 不知道这样能否理解我的问题
劉強東
2016-08-17
打赏
举报
回复
字符流和字节流read方法返回的值, 有关联吗? api的解释是一个是字符,一个是字节 但是不是说字符是两个字节吗? 这是否意味着这两个可以互转, 或者说 FileInputStream fi = new FileInputStream("read.txt"); FileReader fr = new FileReader("read.txt"); System.out.println(fi.read()); // 196 二进制:11000100 System.out.println(fi.read()); // 227 二进制:11100011 System.out.println(fr.read()); // 20320 二进制: 100111101100000 从二进制看这两个数字没任何关系啊 我不太能理解ASCII和unicode之间的关系 , 顺便说下我是百度没有找到才提问的
NewMoons
2016-08-17
打赏
举报
回复
read方法读取字节然后返回int值 ,然后write方法接收int值参数,然后转字节写入文件 ,的详细流程,例如返回的是int值代表什么, 和非字符 返回int值是什么 您说的这些api每个方法注释里写的都很清楚啊,不是不愿告诉你,请先自行阅读。 字符'a' 或者','在unicode码表中也是两个字节吗?[/quote] 是的,所有字符包括中文在java里都是用2个字节表示的,因为java的char就是用Unicode编码的。而Unicode编码对所有字符都是2个字节来表示。你可百度 java 字符 char,肯定能得到满意的答案。 其实楼主更应该去掌握下字符编码的知识,很多问题自然就明白了。
劉強東
2016-08-17
打赏
举报
回复
我想问的是字符流复制文件的原理 read方法读取字节然后返回int值 ,然后write方法接收int值参数,然后转字节写入文件 ,的详细流程,例如返回的是int值代表什么, 和非字符 返回int值是什么 字符'a' 或者','在unicode码表中也是两个字节吗?
NewMoons
2016-08-17
打赏
举报
回复
在java里一个字符是由2个字节组成,表示一个Unicode编码,仅此而已。 字节是表示所有对象的最小单位,也即是说所有的对象都是用字节来表示的。只不过你要遵守约定的规范来表示,这个规范就是编码。 请自行百度关键字:ASCII、Unicode、UTF-8、GB2312等等编码。
java i o中
字符流
和
字节流
的
区别
_java中
字节流
与
字符流
的
区别
字节流
在I/O类库中,java.io.InputStream和java.io.OutputStream分别表示字节输入流和字节输出流,它们都是抽象类,不能实例化,数据流中的最小单位是字节,所以叫做
字节流
。一、InputStream中的读取数据的
方法
如下:1、
int
read
()功能:读取一个字节的数据,并且
返回
读到得数据,如果
返回
-1,则表示读到输入流的末尾。2、
int
read
(byte[] ...
Java IO流精讲:
字节流
、
字符流
与NIO核心机制与工程实践
在Java技术体系中,流(Stream)是数据读写的核心抽象,而很多开发者往往对Input/OutputStream与
Read
er/Writer的分类和适用场景缺乏清晰认知。理解“数据从哪里来到哪里去”的管道思想,以及InputStream的
read
()为何
返回
int
而非byte这类设计细节,是掌握文件复制、二进制传输等操作的关键。引入BufferedInputStream等缓冲流后,可有效减少底层系统调用次数,显著提升IO效率;而通过指定UTF-8、GBK等字符集处理文本,则能规避中文乱码。当并发规模上升
JAVA进阶知识点总结 10-【
字节流
、
字符流
】
01.第一章:IO概述_IO流概述及分类: 1).
字节流
:以“字节”的方式操作数据的。可以读、写任何文件。 A).输出流:OutputStream(抽象类)(三种输出的
方法
) 1).write(
int
b):输出一个字节 2).write(byte[] arr):输出一个字节数组。 3).write(byte[] arr,
int
off,
int
len):输出字节数组的一部分。 |–FileOu...
Java
字节流
与
字符流
高效应用指南
在Java编程中,IO操作是处理数据输入输出的基础技术。
字节流
(InputStream/OutputStream)直接操作原始字节数据,适用于二进制文件处理;而
字符流
(
Read
er/Writer)则专门处理文本数据,自动进行字符编码转换。理解这两种流的
区别
对编写高效Java程序至关重要,特别是在处理多字节字符(如中文)时,
字符流
能有效避免乱码问题。通过合理选择流类型、设置缓冲区大小(通常8KB为经验值)以及采用NIO的零拷贝技术,可以显著提升IO性能。这些技术在文件处理、网络传输等场景中都有广泛应用,是Ja
JAVA基础【
字节流
】史上最简单的
字节流
操作演示
前言: 其实
字符流
的底层还是使用的
字节流
,因为计算机只识别二进制,虽然我们输出
字符流
的时候,里面写的是字符但是最终还是转换成
字节流
然后在进行存储或读取。并且还使用到了一个中间转换的类OutputStreamWriter和InputStream
Read
er,一个是在输出到本地的时候可以把
字符流
转换成
字节流
输出,还有一个是在本地读取
字节流
的内容,然后转换成
字符流
输出到程序的控制台或者存储到指定的容器里。 概述: 本篇博客会先从什么是IO流的概念开始介绍,然后才是例子演示。所以前面一部分理论可能会有点枯燥,
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章