java中read方法
InputStream in = null;in = new BufferedInputStream(new FileInputStream("src/nomal_io.txt"));byte [] buf = new byte[1024];
int bytesRead = in.read(buf);
该read方法调用如下代码:
public int read(byte b[]) throws IOException {return read(b, 0, b.length);}
继续查看
public int read(byte b[], int off, int len) throws IOException {if (b == null) {throw new NullPointerException();} else if (off < 0 || len < 0 || len > b.length - off) {throw new IndexOutOfBoundsException();} else if (len == 0) {return 0;}int c = read();if (c == -1) {return -1;}b[off] = (byte)c;int i = 1;try {for (; i < len ; i++) {c = read();if (c == -1) {break;}b[off + i] = (byte)c;}} catch (IOException ee) {}return i;}/*** Reads the next byte of data from the input stream. The value byte is* returned as an <code>int</code> in the range <code>0</code> to* <code>255</code>. If no byte is available because the end of the stream* has been reached, the value <code>-1</code> is returned. This method* blocks until input data is available, the end of the stream is detected,* or an exception is thrown.** <p> A subclass must provide an implementation of this method.** @return the next byte of data, or <code>-1</code> if the end of the* stream is reached.* @exception IOException if an I/O error occurs.*/
public abstract int read() throws IOException;
该代码 如果返回值是-1 则停止流的read操作,如果c的值不为-1 那么依次将byte[i]的字符写入
至于read方法为什么要返回int类型,原因在于byte类型的取值范围是-128~127,在二进制中,只有8位,在FilenputStream中
public int read() throws IOException {return read0();}private native int read0() throws IOException;
native表示调用非java代码的方法,我们都知道java是c底层实现,在C语言中的字节用unsigned byte基本数据类型,unsigned byte的取值范围是无符号 0-255,能表示所有的字节。而java中的byte返回有符号-128~127,这样当返回-1的时候,不知道是结束程序的-1 还是读取文件的-1 而int取值范围是 -2^31 ~ 2 ^31 - 1
使用-128 & 0xff = 128
-127 & 0xff = 129
-1 & 0xff = 255
就把byte提升为int类型了,来表示数据.
参考:https://blog.csdn.net/qq_20492999/article/details/81222075
java中read方法相关推荐
- 使用java中replaceAll方法替换字符串中的反斜杠
今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: 1 java.util.regex. ...
- java中collection方法_Java 8中的Collector toCollection()方法
toCollection()Java中的Collector类的方法返回一个Collector,该Collector以遇到的顺序将输入元素累积到一个新的Collection中. 语法如下static & ...
- java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...
[单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...
- 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...
本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...
- java中main方法前的public static void及其后面的(String[] args)【笔记自用】
为什么Java的main方法必须是public static void? 一. void 如下,像C, C++一样,将返回值类型改为int,再返回一个0,虽然编译通过,但是运行时会报错. 找到一种可理 ...
- java中同步_在Java中的方法同步和语句同步(块同步) - Break易站
Java 多线程 线程主要通过共享对字段的访问和参考字段引用的对象进行通信.这种通信形式非常有效,但可能出现两种错误:线程干扰和内存一致性错误.需要一些同步构造来防止这些错误.以下示例显示了我们需要同 ...
- JAVA中的方法和构造方法有什么区别
JAVA中的方法和构造方法有什么区别 1.方法有返回类型,方法名小写,不能和类名相同:构造方法没有返回类型,void也不行,名与类名相同. 2.构造方法是初始化对象的重要途径,所以就算你给一个类没有定 ...
- java中的方法求和_在Java中模拟求和类型的巧妙解决方法
java中的方法求和 在继续阅读实际文章之前,我想感谢令人敬畏的Javaslang库的作者Daniel Dietrich ,他在我面前有了这个主意: @lukaseder尝试使用静态方法<T,T ...
- Java中的方法(形参及实参)return返回类型
如何定义 Java 中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 pub ...
- 安卓开发——JNI——回调java中的方法
JNI开发中 在C代码中回调java中的方法 package com.example.jnitest2;import android.app.Activity; import android.cont ...
最新文章
- C语言的一个关键字——static
- 远程访问×××——Easy ×××
- Sublime Text 4首个稳定版发布:全新UI、多选项卡、支持GPU渲染
- java io流(字符流) 文件打开、读取文件、关闭文件
- idea autoscroll from source
- 小程序真机测试错误代码_测试不充分:知道您的代码是否真的可以投入生产的5种方法...
- boss上这样沟通,更容易得到面试机会
- html元素自己属性代码,jQuery如何操作HTML的元素和属性?(代码详解例)
- 微软称伊朗国家黑客攻击美国国防技术公司
- 【事件驱动】【数码管识别】(C++动态链接库的封装和调用)
- 使用phpstudy中的apache进行虚拟主机的配置(自定义网站名进行访问,如http://wei.com)
- 【智能制造】请拿走这份精益培训PPT,不谢!
- C++ 查看本机WiFi密码
- html5怎么把表格边框设为0,css表格边框怎么设置
- 我要偷偷的学Python,然后惊呆所有人(最后一天)
- www.etiger.vip DEVC++练习(入门)
- [NodeJS] Mongoose Populate 基本使用
- 学习编程语言的第一步,认识什么是计算机!!!
- 一种有手就行的物联网平台的多终端接入方法
- nginx小知识 :通过nginx代理转发接口地址
热门文章
- Python爬取基金数据案例
- 天干地支计算公式_求天干地支的计算方法,
- 电脑发现感染麻辣香锅恶意软件咋处理?
- 江苏全国计算机考试考点,江苏省 全国计算机等级考试考点.xls
- ESP8266 初次使用
- 10本营销好书!游戏营销、增长黑客、算法、数据分析、内容营销,总有一款你喜欢
- 运筹系列65:TSP问题的精确求解法概述
- [SD2.0大会]第二天的精彩课程:云计算、大型网站架构、SNS游戏
- Android Studio下16进制颜色代码说明
- 苹果应用商店上传应用卡在了“Authenticating with the iTunes Store”