程序的开发其中一直在用文件的读写。可是对于java其中输入流以及输出流仅仅是会用不理解,一直以来想搞清楚其,可是一直没有运行(悲剧)。今天早上抽出半个小时通过JDK
API1.6.0中文版帮助逐步的了解下字节输入流读取字节的方法。
以下就说说InputStream其中read()、read(byte[]  b)、read(byte[]
b、int off 、int
len)的使用以及差别

一、read()方法:
public static void inputStreamRead1() {
      try{
            //构造一个输入流对象(读数据)test.txt文本的内容为:我爱你中国
            InputStream is = new FileInputStream(“E:\\test.txt”);
            //构造一个输出流对象(写数据)
            OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
            int len;//表示读入的数据(十进制的形式表示)
            //FileInputStream能够使用read()方法一次读取一个字节,读入的数据以int类型返回,所以,你要是使用System.out.println()将数据显示出来的时候是以10进制的方式显示
            while((len = is.read())!=-1){
                 System.out.println(“len=”+len);
                 os.write(len);
           }
           os.close();
           is.close();
     }catch(Exception e){
            e.printStackTrace();
     }
}
执行以上程序,则控制台的输出为:
如图

说明:我爱你中国为5个汉字,5个汉字则为10个字节,而read()方法为一个字节一个字节的读,所以读取10次。而后len的值则为汉字的10进制表示
2、read(byte[] b)方法:
public static void inputStreamRead2(){
     try{
           //构造输入流对象(读数据)test.txt文本的内容为多个我爱你中国
           InputStream is = new FileInputStream(“E:\\test.txt”);
           //构造输出流对象(写数据)
           OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
           //创建一个长度为1024的byte数组
           byte[] b = new byte[1024];
           //int len;表示成功读取的字节数的个数
           //FileInputStream能够使用read(byte[] b )每次读取多个(b.length)字节数据(每次最多读取多少个)到byte数组其中
           while((len = is.read(b))!=-1){
               System.out.println(“len=”+len);
               os.write(b);
           }
           os.close();
           is.close();
      }catch(Exception e){
           e.printStackTrace();
      }
}
执行上面的程序则控制台的输出为:
如图

说明:每次最多读取1024个字节。非常明显使用这样的方式的效率要高于read()读取的效率,开发的过程其中也见识使用此方式进行读取。
3、read(byte[] b,int off,intlen):
1、public static void inputStreamRead3(){
          try{
                //构建输入流对象(读文件)
                InputStream is = new FileInputStream(“E:\\test.txt”);
                //构建输出流对象(写文件)
                OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
               //声明一个大小为输入流大小的数组
                byte[] b = new byte[is.available()];
                int len = 0;//表示成功读取的字节数的个数
                while(len<is.available()){
                     //read(byte[] b,int off, int len)表示从输入流其中最多将len个字节的数据读取到一个byte数组其中
                     len+=is.read(b, len, is.available() - len);
                     os.write(b);
                }
                os.close();
                is.close();
           }catch{
                   e.printStackTrace();
           }
}
执行上面的程序控制台的输出为:
如图

说明:则一次性读取完毕
2、public static void inputStreamRead3(){
          try{
                //构建输入流对象(读文件)
                InputStream is = new FileInputStream(“E:\\test.txt”);
               //构建输出流对象(写文件)
                OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
               //声明一个大小为输入流大小的数组
                byte[] b = new byte[1024];
                int len = 0;//表示成功读取的字节数的个数
                while((len=is.read(b,len,1024))!=-1){
                      System.out.println(“len=”+len);
                      os.write(b);
                }
                os.close();
                is.close();
           }catch{
               e.printStackTrace();
           }
}
说明:执行上面的程序控制台的输出为:
如图

则一次最多读取1024个字节


关于Java IO InputStream 的一点整理!的更多相关文章

  1. struts2文件下载 出现Can not find a java.io.InputStream with the name的错误

    成功代码: 前台界面jsp: <a style="text-decoration:none;" href="<%=path %>/main/frontN ...

  2. struts2文件下载出现Can not find a java.io.InputStream with the name的错误

    今天在用struts2就行文件下载时出现如下错误: Servlet.service() for servlet default threw exception java.lang.IllegalArg ...

  3. 【java】io流之字节输入流:java.io.InputStream类及子类java.io.FileInputStream

    package 文件操作; import java.io.File; import java.io.FileInputStream; import java.io.IOException; impor ...

  4. Error: Default interface methods are only supported starting with Android N (--min-api 24): java.io.InputStream org.apache.poi.sl.usermodel.ObjectShape.readObjectData()

    项目运行的时候,如果报错 Error: Default interface methods are only supported starting with Android N (--min-api ...

  5. Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack.

    1.错误描写叙述 八月 14, 2015 4:22:45 下午 com.opensymphony.xwork2.util.logging.jdk.JdkLogger error 严重: Excepti ...

  6. java io InputStream 转 byte

    InputStream is ; ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] b = new byte[1024] ...

  7. Java IO流系统整理

    Java IO流的分类 Java中的流,可以从不同的角度进行分类. 按流向分类: 输入流: 程序可以从中读取数据的流.输出流: 程序能向其中写入数据的流. 按数据传输单位分类: 字节流:以字节(8位二 ...

  8. java IO文件读写例子(OutputStream,InputStream,Writer,Reader)

    一,File创建文件 File file = new File("D:" + File.separator + "yi.txt"); 代码示例: package ...

  9. ava.io.InputStream & java.io.FileInputStream

    java.io.InputStream & java.io.FileInputStream java.io.InputStream,这个抽象类是表示字节输入流的超类,这个抽象类的共性的方法有: ...

随机推荐

  1. SharePoint 第一个网站

    第一个网站 1.建立一个社区门户网站首先要建一个IIS网站,并且把匿名访问勾选上,这样才能真正的访问网站. 创建网站的时候更改自己想要的端口,以便操作 这里更改网站是否启用匿名访问权限.点击是 然后保 ...

  2. [转]Adobe Creative Cloud 2015 下载 Adobe CC 2015 Download

    Adobe Creative Cloud 2015 下载   Adobe 宣布 Creative Cloud 设计套件全线更新! Adobe CC 2015新功能包括: – Premiere Pro ...

  3. Perceptron Learning Algorithm(python实现)

    一.概论 对于给定的n维(两种类型)数据(训练集),找出一个n-1维的面,能够"尽可能"地按照数据类型分开.通过这个面,我们可以通过这个面对测试数据进行预测. 例如对于二维数据,要 ...

  4. [国家集训队]整数的lqp拆分 数学推导 打表找规律

    题解: 考场上靠打表找规律切的题,不过严谨的数学推导才是本题精妙所在:求:$\sum\prod_{i=1}^{m}F_{a{i}}$ 设 $f(i)$ 为 $N=i$ 时的答案,$F_{i}$ 为斐波 ...

  5. Hexo Next 调优

    Links对齐 编辑themes/next/source/css/_custom下的custom.styl,添加如下代码即可. .links-of-blogroll-title{ margin-lef ...

  6. AWK的介绍学习

    第一节.awk的工作流程和基本用法 1.awk介绍 awk是一种报表生成器,就是对文件进行格式化处理的,这里的格式化不是文件系统的格式化,而是对文件内容进行各种"排版",进而格式化 ...

  7. Jupyter Notebook 常用的快捷键

    Jupyter Notebook 有两种键盘输入模式.编辑模式,允许你往单元中键入代码或文本:这时的单元框线是绿色的.命令模式,键盘输入运行程序命令:这时的单元框线是灰色. Shift+Enter : ...

  8. P1872 回文串计数(回文树)

    题目描述 小a虽然是一名理科生,但他常常称自己是一名真正的文科生.不知为何,他对于背诵总有一种莫名其妙的热爱,这也促使他走向了以记忆量大而闻名的生物竞赛.然而,他很快发现这并不能满足他热爱背诵的心,但 ...

  9. fork函数详解

    一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同, ...

  10. SCU 1095运送物资(最短路)

    SCU 1095运送物资(最短路) X国发生了内战.起义军得到了广大人民的支持.在一次战役中,反动军队结集了大量兵力,围攻起义军的主堡W城.为支援前线,后方各个供给基地城市纷纷准备将物资运往W城.各基 ...