字节输入流操作步骤:
  A:创建字节输入流对象
  B:调用read()方法读取数据,并把数据显示在控制台
  C:释放资源

步骤A、C 略过,说步骤B

   读取数据的方式:
     A:int read():一次读取一个字节
     B:int read(byte[] b):一次读取一个字节数组

要想进行字节输入流的操作,我得先创建一个文件,并用字节输出流输出内容到这个文件里面:

 //首先我创建一个txt文件,并输出内容
File file = new File("a.txt"); //用字节输出流输出数据
FileOutputStream out = new FileOutputStream(file);
out.write("java IO".getBytes());
out.close();

读取数据的方式A:int read():一次读取一个字节

int by = fis.read();
System.out.println(by);//这里输出的会是j的ASCII码‘106’
System.out.println((char) by);//所以要进行类型转换,输出‘j’,因为每次读取一个字节,都会进行转换类型,所以如果是汉字,那么转换结果我们看不懂

因为这个方式只是读取一个字节,所以如果接着写下去,它会输出下一个字节,相当于添加了个next在前面。

直到你读取到内容最后,没有内容可读取了,就会返回“-1”。所以,我们可以使用循环来一次性把里面的内容输出:

int by = 0;
while((by = in.read()) != -1){//当返回的是-1时,代表后面没有内容了,就跳出这个循环。
System.out.print((char)by);

读取数据的方式B:int read(byte[] b):一次读取一个字节数组

数组的长度一般是1024或者1024的整数倍

这个方法的返回值其实是实际读取的字节个数。同样,这个方法若是返回值为“-1”,则代表后面没有数据

 byte[] bys = new byte[1024];//1024的整数倍
int len = 0;//存储读取的实际长度
while ((len = in.read(bys)) != -1) {
System.out.print(new String(bys, 0, len));//打印这个数组的所有内容
}

注意:以上方法为了方便,都是把异常抛出。记得,一定要释放资源

xxx.close();

java 20 - 7 字节输入流的操作的更多相关文章

  1. java 20 - 5 字节输出流写出数据的一些方法

    首先回顾下 字节输出流操作步骤:  A:创建字节输出流对象  B:调用write()方法  C:释放资源 创建字节流输出对象 FileOutputStream fos = new FileOutput ...

  2. 字节输入流_InputStream类&FileInputStream类介绍和字节输入流读取字节数据

    java.io.InputStream:字节输入流 此抽象类是表示字节输入流的所有类的超类 定义了所有子类共性的方法: int read()从输入流中读取数据的下一个字节 int read(byte[ ...

  3. 字节输出流的续写和换行和字节输入流InputStream类&FileInputStream类介绍

    数据追加续写 每次程序运行,创建输出流对象,都会清空目标文件中的数据.如何保目标文件中的数据,还能继续添加新数据呢? public FileOutputStream(File file,boolean ...

  4. java 20 - 9 带有缓冲区的字节输出流和字节输入流

    由之前字节输入的两个方式,我们可以发现,通过定义数组读取数组的方式比一个个字节读取的方式快得多. 所以,java就专门提供了带有缓冲区的字节类: 缓冲区类(高效类) 写数据:BufferedOutpu ...

  5. Java 之 字节输入流 [InputStream]

    一.字节输入流 java.io.InputStream 抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中. 它定义了字节输入流的基本共性功能方法. 共性方法: public void c ...

  6. java IO流 之 字节输入流 InputString()

    学习java的重点之一:InputStream  字节输入流的使用 (1)FileInputstream: 子类,读取数据的通道 使用步骤: 1.获取目标文件:new File() 2.建立通道:ne ...

  7. 乐字节Java反射之四:反射相关操作

    大家好,乐字节小乐继续为Java初学者讲述Java基础知识.上次说到乐字节Java反射之三:方法.数组.类加载器,这次是Java反射之四:反射相关操作 1.操作属性 //1.获取Class对象 Cla ...

  8. Java(20~24)

    1.Collection中的集合称为单列集合,Map中的集合称为双列集合(键值对集合). 2.Map常用方法:map.put()   map.get()   map.remove()   map.ke ...

  9. Java中的字节,字符与编码,解码

    ASCII编码 ASCII码主要是为了表示英文字符而设计的,ASCII码一共规定了128个字符的编码(0x00-0x7F),只占用了一个字节的后面7位,最前面的1位统一规定为0. ISO-8859-1 ...

随机推荐

  1. inner Join on 随随随随随便一记

                                   幼儿园大班生(随便的记一记) JOIN 分为:内连接(INNER JOIN).外连接(OUTER JOIN).其中,外连接分为:左外连接( ...

  2. asp.net mvc Html.BeginForm()方法

    Html.BeginForm()方法将会输出<form>标签,而且必须以using包起来,如此便可在using程序代码最后退出时,让asp.net mvc帮你补上<form>标 ...

  3. lazyload.js详解

    简介 lazyload.js用于长页面图片的延迟加载,视口外的图片会在窗口滚动到它的位置时再进行加载,这是与预加载相反的. 优点: 它可以提高页面加载速度: 在某些情况清晰它也可以帮助减少服务器负载. ...

  4. compass制作sprite雪碧图

    1.安装compass.(需要先安装ruby) 命令行:gem install compass 2.新建一个compass 项目 命令行:compass create myproject 3.在myp ...

  5. SharePoint 2013 - User

    1. 在SharePoint 2010中,可以搜索出NT AUTHORITY\authenticated users,但在SharePoint 2013中,不能搜索出,需要手动写入全名后进行验证: 2 ...

  6. Windows 下Apace tomcat

    java JDK安装: 1. 官方www.oracle.com 下载jdk 2. 环境变量配置 (1)新建->变量名:JAVA_HOME变量值:C:\Program Files (x86)\Ja ...

  7. android Android-PullToRefresh 下拉刷新

    1.github下载地址 原作者:  https://github.com/chrisbanes/Android-PullToRefresh 我自己的:  https://github.com/zyj ...

  8. 手动设定实例变量的KVO实现监听

    手动设定实例变量的KVO实现监听 如果将一个对象设定成属性,这个属性是自动支持KVO的,如果这个对象是一个实例变量,那么,这个KVO是需要我们自己来实现的. 以下给出源码供君测试: Student.h ...

  9. chrome和搜狗浏览器的js问题

    1.在chrome中如果是js添加颜色必须用"#00CC00",必须加#号...不然会出问题,但是在搜狗浏览器中可以没有#号也能正确识别...

  10. System.nanoTime()的使用

    纳秒 ns(nanosecond):纳秒, 时间单位.一秒的10亿分之一,即等于10的负9次方秒.常用作 内存读写速度的单位. 1纳秒=0.000001 毫秒 1纳秒=0.00000 0001秒 ja ...