Java中字节流和字符流的read()方法为什么返回的值是int类型
/*
* 字节流和字符流的read()方法为什么返回的是int类型?而且为什么用-1作为判断是不是流末尾?
*/package cn.itcast.day_16;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;public class ReadMethodDemo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("src.txt");
fr.read();/*
* 如果返回char, 那么无法表示流末尾.
* char的取值范围是从0到65535
* 这个范围内的所有字符, 都有可能在数据中出现
* 我们需要使用一个不可能在数据中出现的值来表示流末尾
* 那么Java中就是用-1来表示这个末尾的, 因为-1不会在数据中出现
* 而为了返回-1, 那么只能用int
* 当流中读取到一个字符时, read()方法内部就会当作int返回, 如果读到流末尾, 直接返回-1
*/
FileInputStream fis = new FileInputStream ("src.jpg");
//fis.read();int b;
while((b = fis.read()) != -1)
System.out.println((byte)b); //打印的结果全是正数
/*
* 如果返回byte, 同样无法表示流末尾.
* byte的取值范围是从-128到127
* 这个范围内所有的数据, 都有可能在数据中出现
* read()方法需要返回一个特殊的值来表示流末尾, 这个值不能和流中的数据重复
*
* 字符流中读取到的char是直接当作int使用, 例如读取到一个'a'也就是97的时候, 那么就相当于返回了一个int的97
* 字节流中不能这么做, 因为如果文件中存在数据-1, 把-1直接当作int返回还是-1, 那么就无法区分这个读到的结果是流末尾还是流中的数据了
*
* read()方法内部将读取到的所有字节高位补0转为int返回, 这样做所有的数据都会是正数
* 这时就可以用-1表示流末尾了
* 而改变后的数据只要强转回byte, 就可以得到原有数据
*/
}}
Java中字节流和字符流的read()方法为什么返回的值是int类型相关推荐
- 四十、Java中字节流和字符流介绍和区别
@Author:Runsen @Date:2020/6/6 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...
- Java中字节流和字符流的比较(转)
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操 ...
- 【转】文本文件和二进制文件区别及java中字节流和字符流归纳
首先在物理上文本文件和二进制文件并没有区别,都是以二进制01的形式存放于存储介质中,他们的区别只是逻辑上的区别,这两种方式只是在编码层次上有差别.文本文件是基于字符编码的文件,常见的编码有ASCII编 ...
- java中字符流和字节流的区别_java中字节流和字符流有哪些区别
java中字节流和字符流的区别有:1.定义不同:2.结尾不同:3.处理方式不同:4.缓冲区不同:5.编码方式不同.字节流默认不使用缓冲区,而字符流使用缓冲区.字节流采用ASCII编码,字符流采用uni ...
- Java IO 字节流与字符流 (三)
概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...
- java.IO字节流和字符流详解
IO流的分类 在学习字节流和字符流之前因该先学习IO流的分类,效果会更好 有多种分类方式: 一种方式是按照流的方向进行分类: 以内存作为参照物, 往内存中去,叫做输入(Input).或者叫做读(Rea ...
- Java测试字节流和字符流,以及带缓存的字符流读取速度对比
测试用的文件为txt格式文件,大小为2.12MB package IO;import java.io.BufferedReader; import java.io.File; import java. ...
- Java IO 字节流、字符流详解
1. 字节流与字符流 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接.类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流 ...
- java中什么是字节流和字符流_java中字节流与字符流的区别是什么
字节(Byte)是进行io操作的基本数据单位,在程序进行字节数据输出时可以使用OutputStream类完成 此类定义如下: public abstract class OutputStream ex ...
- Java文件字节流和字符流FileInputStream,FileOutputStream,FileReader,FileWriter
一,文件输入流和文件输出流:FileInputStream,FileOutputStream FileInputStream可以使用read()方法一次读入一个字节,并以int类型返回,或者是使用re ...
最新文章
- C#后台访问前台Html控件的方法
- java登录中用户类型分类_基于用户登陆的struts2中action的分类详解
- 基于SharePoint 的企业信息平台架构
- CVPR 2021 最佳论文!对抗神经网络GAN解决3D场景难题
- 最新图解 github 修改github地址 用户名
- JavaWeb后端代码自动生成工具
- Linux高级命令find,grep,sed,awk
- 32-【算法与数据结构】伪代码与流程图
- Selenium(2): DOM元素定位、操作
- python中常用英语口语_常用英语口语100句(超实用)_
- 获取Keycloak的Token示例
- python简单程序实例-python简单项目实例
- 极光推送在APICloud平台的使用教程
- 解决idea在运行时出现Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8?
- 传智播客python培训怎么样
- android什么意思?Android岗面试12家大厂成功跳槽,Android校招面试指南
- AAAI‘22 推荐系统论文梳理
- 51nod3121 小陶与杠铃片
- 机器学习之必备知识篇
- uniapp部分安卓字体加粗问题
热门文章
- 前端工程师和python工程师收入哪个高_前端工程师和后端工程师工资哪个高
- #Android-中控指纹仪Live R20 开发注意事项#
- 黑马python入门笔记(部分)
- 史上最详细教你制作“U盘启动盘”重装Windows10系统
- 数据安全平台——DSP
- 【GitHub】README.md文件中 markdown语法 插入超链接
- 中国石化股票价值线分析
- 【日语】英语26个字母的日语读法
- Vue中部署百度富文本编辑器UEditor及其自带的后端,并加入秀米插件
- Rayman的绝顶之路——Leetcode每日一题打卡1