BufferedInputStream 缓冲输入字节流 -------上

 1 package com.BufferedInputStreamUse;
 2
 3 import java.io.BufferedInputStream;
 4 import java.io.File;
 5 import java.io.FileInputStream;
 6 import java.io.FileNotFoundException;
 7 import java.io.IOException;
 8
 9 /*
10 我们清楚读取文件数据使用缓冲数组读取效率更高,sun也知道使用缓冲数组读取效率更高,那么
11 这时候sun给我们提供了一个------缓冲输入字节流对象,让我们可以更高效率读取文件。
12
13
14 输入字节流体系:
15 ----| InputStream  输入字节流的基类。 抽象
16 ----------| FileInputStream 读取文件数据的输入字节流
17 ----------| BufferedInputStream 缓冲输入字节流    缓冲输入字节流的出现主要是为了提高读取文件数据的效率。
18 其实该类内部只不过是维护了一个8kb的字节数组而已。
19
20 注意: 凡是缓冲流都不具备读写文件的能力。
21
22 使用BufferedInputStream的步骤    :
23     1. 找到目标文件。
24     2. 建立数据 的输入通道
25     3. 建立缓冲 输入字节流流
26     4. 关闭资源
27 */
28 /**
29  * BufferedInputStream 缓冲输入字节流
30  * @author Administrator
31  *
32  */
33
34 //读取文件的时候我们都是使用缓冲数组读取。效率会更加高
35 class Reader{
36     public static void readTest(){
37         //找到目標文件
38         File file = new File("D://aa.txt");
39         //建立数据之间的通信
40         BufferedInputStream bufferedInputStream = null;
41         try {
42             FileInputStream fileInputStream = new FileInputStream(file);
43             bufferedInputStream = new BufferedInputStream(fileInputStream);
44             int length = 0;
45            /* //这种方法无法解释汉子
46             while((length = bufferedInputStream.read())!=-1){
47                 System.out.print((char)length);
48             }*/
49             byte[] bs = new byte[1024*8];
50             //疑问二:BufferedInputStream出现 的目的是了提高读取文件的效率,但是BufferedInputStream的read方法每次读取一个字节的数据
51             //而FileInputStreram每次也是读取一个字节的数据,那么BufferedInputStream效率高从何而来?
52             while((length = bufferedInputStream.read(bs))!=-1){
53             String str = new String(bs,0,length);
54             System.out.println(str);
55             }
56         } catch (FileNotFoundException e) {
57             // TODO Auto-generated catch block
58             e.printStackTrace();
59         } catch (IOException e){
60             e.printStackTrace();
61
62         }finally{
63             if(bufferedInputStream != null){
64                 try {
65                     //调用BufferedInputStream的close方法实际上关闭的是FileinputStream.
66                     bufferedInputStream.close();
67                 } catch (IOException e) {
68                     // TODO Auto-generated catch block
69                     e.printStackTrace();
70                 }
71             }
72         }
73
74     }
75 }
76
77 public class BufferedInputStreamTest {
78
79     public static void main(String[] args) {
80         // TODO Auto-generated method stub
81
82         Reader reader = new Reader();
83         reader.readTest();
84     }
85
86 }
时间: 2024-10-02 10:00:50

BufferedInputStream 缓冲输入字节流 -------上的相关文章

使用带缓冲的字节流读写数据

首先不使用带缓冲的字节流: package com.yunqing; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class bytelianxi { public static void main(String[] args) { try { //输入流"video.mp4": 相对路径:idea读取根目录下的video.mp4文

IO流 - 复制文件(字节缓冲流+字节流)

一.什么是缓冲流 缓冲流的内部都包含一个缓冲区,通过缓冲区读写,可以提高了IO流的读写速度. 二.缓冲流+字节流复制文件 //明确数据源 FileInputStream fis=new FileInputStream("D:\\java1018\\buffer.txt"); //明确目的地 FileOutputStream fos=new FileOutputStream("D:\\java1018\\a\\buffer2.txt"); //创建缓冲流对象 //输入

常用输入字节流InputStream

输入字节流InputStream的一系列实现,以下是五种较常用的子类 1.字节数组作为输入源--ByteArrayInputStream 该类包括两个构造方法 ByteArrayInputStream(byte[] buf); ByteArrayInputStream(byte[] buf,int offset,int length ); 该类重写了InputStream中的所有方法,因此我们可以调用其父类同名的方法进行读写操作. 下面是如何通过一个字节数组创建字节输入流的过程,并从输入流中读取

FileInputStream 读取文件数据的输入字节流

1 package com.inputstream; 2 3 /* 4 File类: 用于描述一个文件或者文件夹的. 5 6 通过File对象我们可以读取文件或者文件夹的属性数据,如果我们需要读取文件的内容数据,那么我们需要使用IO流技术. 7 8 IO流(Input Output) 9 10 IO流解决问题: 解决设备与设备之间的数据传输问题. 内存--->硬盘 硬盘--->内存 11 IO流技术: 12 IO流分类: 13 如果是按照数据的流向划分: 14 输入流 15 输出流 16 如果

Java IO: 其他字节流(上)

作者: Jakob Jenkov 译者: 李璟([email protected]) 本小节会简要概括Java IO中的PushbackInputStream,SequenceInputStream和PrintStream.其中,最常用的是PrintStream,System.out和System.err都是PrintStream类型的变量,请查看Java IO: System.in, System.out, System.err浏览更多关于System.out和System.err的信息. P

BufferedReader,缓冲输入字符流

1. /** * 输入字符流: * --------|Reader 所有输入字符流的基类.抽象类 * -----------|FileReader 读取文件字符串的输入字符流. * -----------|BufferedReader 缓冲输入字符流.目的是:提高读取效率和拓展FileReader的功能.(该类内部也是维护了字节数组) */ public class Demo1 { public static void main(String[] args) throws IOException

缓冲输入输出流[也叫包装流] BufferedInputStream,BufferedOutputStream,BufferedReader和BufferedWriter

字符缓冲流: 开发时候建议使用缓冲流,速度和效率更快.BufferedReader的api部分: BufferedInputStream 部分api: 可以看出 BufferedInputStream是没有readLine()方法.更多具体,请自行查看api文档 package cn.bean.demo.io.buffer; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReade

java-HttpGetPost-图片字节流上传

在java程序开发中经常用到与服务端的交互工作,主要的就是传递相应的参数请求从而获取到对应的结果加以处理 可以使用Get请求与Post请求,注意!这里的Get请求不是通过浏览器界面而是在程序代码中设置的,达到Get请求的目的,具体请详见下列描述 以下get与post请求需要引入的包: import java.io.IOException; import java.io.InputStream; import java.net.URLDecoder; import org.apache.commo

读取键盘输入---字节流

键盘是一个标准的输入设备,java对于这种输入设备都有对应的对象. public static void readKey() throws IOException { //如果输入字符a然后回车输入,输入的其实是三个字节,in.read()每次只读一个字节. InputStream in = System.in; int ch = in.read();//阻塞式方法. System.out.println(ch);//97 int ch1 = in.read();//阻塞式方法. System.