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方法相关推荐

  1. 使用java中replaceAll方法替换字符串中的反斜杠

    今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: 1 java.util.regex. ...

  2. java中collection方法_Java 8中的Collector toCollection()方法

    toCollection()Java中的Collector类的方法返回一个Collector,该Collector以遇到的顺序将输入元素累积到一个新的Collection中. 语法如下static & ...

  3. java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...

    [单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...

  4. 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...

    本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...

  5. java中main方法前的public static void及其后面的(String[] args)【笔记自用】

    为什么Java的main方法必须是public static void? 一. void 如下,像C, C++一样,将返回值类型改为int,再返回一个0,虽然编译通过,但是运行时会报错. 找到一种可理 ...

  6. java中同步_在Java中的方法同步和语句同步(块同步) - Break易站

    Java 多线程 线程主要通过共享对字段的访问和参考字段引用的对象进行通信.这种通信形式非常有效,但可能出现两种错误:线程干扰和内存一致性错误.需要一些同步构造来防止这些错误.以下示例显示了我们需要同 ...

  7. JAVA中的方法和构造方法有什么区别

    JAVA中的方法和构造方法有什么区别 1.方法有返回类型,方法名小写,不能和类名相同:构造方法没有返回类型,void也不行,名与类名相同. 2.构造方法是初始化对象的重要途径,所以就算你给一个类没有定 ...

  8. java中的方法求和_在Java中模拟求和类型的巧妙解决方法

    java中的方法求和 在继续阅读实际文章之前,我想感谢令人敬畏的Javaslang库的作者Daniel Dietrich ,他在我面前有了这个主意: @lukaseder尝试使用静态方法<T,T ...

  9. Java中的方法(形参及实参)return返回类型

    如何定义 Java 中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 pub ...

  10. 安卓开发——JNI——回调java中的方法

    JNI开发中 在C代码中回调java中的方法 package com.example.jnitest2;import android.app.Activity; import android.cont ...

最新文章

  1. C语言的一个关键字——static
  2. 远程访问×××——Easy ×××
  3. Sublime Text 4首个稳定版发布:全新UI、多选项卡、支持GPU渲染
  4. java io流(字符流) 文件打开、读取文件、关闭文件
  5. idea autoscroll from source
  6. 小程序真机测试错误代码_测试不充分:知道您的代码是否真的可以投入生产的5种方法...
  7. boss上这样沟通,更容易得到面试机会
  8. html元素自己属性代码,jQuery如何操作HTML的元素和属性?(代码详解例)
  9. 微软称伊朗国家黑客攻击美国国防技术公司
  10. 【事件驱动】【数码管识别】(C++动态链接库的封装和调用)
  11. 使用phpstudy中的apache进行虚拟主机的配置(自定义网站名进行访问,如http://wei.com)
  12. 【智能制造】请拿走这份精益培训PPT,不谢!
  13. C++ 查看本机WiFi密码
  14. html5怎么把表格边框设为0,css表格边框怎么设置
  15. 我要偷偷的学Python,然后惊呆所有人(最后一天)
  16. www.etiger.vip DEVC++练习(入门)
  17. [NodeJS] Mongoose Populate 基本使用
  18. 学习编程语言的第一步,认识什么是计算机!!!
  19. 一种有手就行的物联网平台的多终端接入方法
  20. nginx小知识 :通过nginx代理转发接口地址

热门文章

  1. Python爬取基金数据案例
  2. 天干地支计算公式_求天干地支的计算方法,
  3. 电脑发现感染麻辣香锅恶意软件咋处理?
  4. 江苏全国计算机考试考点,江苏省 全国计算机等级考试考点.xls
  5. ESP8266 初次使用
  6. 10本营销好书!游戏营销、增长黑客、算法、数据分析、内容营销,总有一款你喜欢
  7. 运筹系列65:TSP问题的精确求解法概述
  8. [SD2.0大会]第二天的精彩课程:云计算、大型网站架构、SNS游戏
  9. Android Studio下16进制颜色代码说明
  10. 苹果应用商店上传应用卡在了“Authenticating with the iTunes Store”