Java当中InputStream中read()、read(byte[] b)、read(byte[] b,int off,int len)

转载自: http://www.apkbus.com/android-124993-1-1.html
主要是read(byte[] bint off int len)方法中的例子,构造长度为流中实际数据的长度。

时今,程序的开发当中一直在用文件的读写,但是对于 java 当中输入流以及输出流只是会用不理解,一直以来想搞清楚其,但是一直没有执行(悲剧),今天早上抽出半个小时通过 JDK API1.6.0 中文版帮助逐步的了解下字节输入流读取字节的方法;
下面就说说 InputStream 当中 read() read(byte[]  b) read(byte[] b int off  int len) 的使用以及区别 ( txt 文本的复制为例通过代码以及注释说明 )
一、read()方法:
public static void inputStreamRead1() {
      try{
            // 构造一个输入流对象(读数据) test.txt 文本的内容为:我爱你中国
            InputStream is = new FileInputStream(“E:\\test.txt”);
            // 构造一个输出流对象(写数据)
            OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
            i nt 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();
     }
}
运行以上程序,则控制台的输出为:
如图片1
说明:我爱你中国为 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();
      }
}
运行上面的程序则控制台的输出为:
如图片2
说明:每次最多读取 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
                     //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();
           }
}
运行上面的程序控制台的输出为:
如图片3
说明:则一次性读取完成
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();
           }
}
说明:运行上面的程序控制台的输出为:
如图片4
则一次最多读取 1024 个字节
来自群组: 农村创业者
java,  程序,  开发,  java,  java
本主题由 祝福 于 2013-8-12 13:58 移动

图片1.png (78 KB, 下载次数: 5)

Java当中InputStream中read()、read(byte[] b)、read(byte[] b,int off,int len)_第1张图片

图片2.png (98.41 KB, 下载次数: 2)

Java当中InputStream中read()、read(byte[] b)、read(byte[] b,int off,int len)_第2张图片

图片3.png (107 KB, 下载次数: 10)

Java当中InputStream中read()、read(byte[] b)、read(byte[] b,int off,int len)_第3张图片

图片4.png (102.45 KB, 下载次数: 4)

Java当中InputStream中read()、read(byte[] b)、read(byte[] b,int off,int len)_第4张图片

你可能感兴趣的:(Java当中InputStream中read()、read(byte[] b)、read(byte[] b,int off,int len))