缓冲流BufferedInputStream


------------恢复内容开始------------

相当于FileInoutStream,缓冲流用的更多,因为速度更快,

第一步建立文件File类对象指明文件来源,必须是已有的的文件,因为是读入操作,

第二步建立BufferedInputStream类对象,将File类对象作为参数传入构造器

第三步进行读入操作,创建byte[]数组,调用read方法,bis.read(byte)在while循环中(len=(bis.read(byte))!=-1)

第四步关闭流:try-catch-finally处理

------------恢复内容结束------------

  1 /**
  2      * 缓冲流的使用:
  3      * BufferedInputStream
  4      * BufferedOutStream
  5      * BufferedReader
  6      * BufferedWriter
  7      ***************
  8      * 缓冲流的作用与意义:提高流的读写速度
  9      *
 10      */
 11 
 12 public class BufferTest {
 13     @Test
 14     public void test(){
 15         BufferedInputStream bufferedInputStream= null;
 16         BufferedOutputStream bufferedOutputStream= null;
 17         try {
 18             //1:造文件
 19             File file=new File("123.jpg");
 20             File file2=new File("12345.jpg");
 21             //2:创建实例,首先创建节点流,将此节点流放入创建的缓冲流中
 22             FileInputStream fileInputStream=new FileInputStream(file);
 23             FileOutputStream fileOutputStream=new FileOutputStream(file2);
 24             bufferedInputStream = new BufferedInputStream(fileInputStream);
 25             bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
 26             //3:进行操作
 27             byte[]buffer=new byte[10];
 28             int len;
 29             while ((len=bufferedInputStream.read(buffer))!=-1){
 30                 bufferedOutputStream.write(buffer,0,len);
 31             }
 32         } catch (IOException e) {
 33             e.printStackTrace();
 34         } finally {
 35         //4:关闭流:先关闭缓冲流,再关闭文件流,缓冲流关闭,会直接将文件流也关闭
 36             try {
 37                 bufferedInputStream.close();
 38             } catch (IOException e) {
 39                 e.printStackTrace();
 40             }
 41             try {
 42                 bufferedOutputStream.close();
 43             } catch (IOException e) {
 44                 e.printStackTrace();
 45             }
 46         }
 47     }
 48     //创建一个复制文件的方法
 49     public void copy(String s1,String s2){
 50         BufferedInputStream bufferedInputStream= null;
 51         BufferedOutputStream bufferedOutputStream= null;
 52         try {
 53             File file=new File(s1);
 54             File file2= new File(s2);
 55             FileInputStream fileInputStream=new FileInputStream(file);
 56             FileOutputStream fileOutputStream=new FileOutputStream(file2);
 57             bufferedInputStream = new BufferedInputStream(fileInputStream);
 58             bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
 59             byte[]buffer=new byte[5];
 60             int len;
 61             while ((len=bufferedInputStream.read(buffer))!=-1){
 62                 bufferedOutputStream.write(buffer,0,len);
 63             }
 64         } catch (IOException e) {
 65             e.printStackTrace();
 66         } finally {
 67             try {
 68                 bufferedInputStream.close();
 69             } catch (IOException e) {
 70                 e.printStackTrace();
 71             }
 72             try {
 73                 bufferedOutputStream.close();
 74             } catch (IOException e) {
 75                 e.printStackTrace();
 76             }
 77         }
 78     }
 79 
 80    @Test
 81     public void test2(){
 82        copy("123.jpg","132612.jpg");
 83    }
 84    //使用BufferedReader,BufferedWriter复制文本文件
 85    @Test
 86     public void test3(){
 87        BufferedReader bufferedReader= null;
 88        BufferedWriter bufferedWriter= null;
 89        try {
 90            bufferedReader = new BufferedReader(new FileReader(new File("hello.txt")));
 91            bufferedWriter = new BufferedWriter(new FileWriter(new File("huang.txt")));
 92            char[]chars=new char[1024];
 93            int len;
 94            while ((len=bufferedReader.read(chars))!=-1){
 95                bufferedWriter.write(chars,0,len);
 96            }
 97        } catch (IOException e) {
 98            e.printStackTrace();
 99        } finally {
100            try {
101                bufferedReader.close();
102            } catch (IOException e) {
103                e.printStackTrace();
104            }
105            try {
106                bufferedWriter.close();
107            } catch (IOException e) {
108                e.printStackTrace();
109            }
110        }
111    }
112    //获取文本文件上每个字符出现的次数:遍历每一个字符,字符及出现的次数放在Map里面
113     @Test
114     public void test4(){
115         Map map=new HashMap();
116         int c=0;
117         BufferedReader bufferedReader= null;
118         BufferedWriter bufferedWriter= null;
119         try {
120             File file=new File("hello.txt");
121             File file1=new File("huang.txt");
122             bufferedReader = new BufferedReader(new FileReader(file));
123             bufferedWriter = new BufferedWriter(new FileWriter(file1));
124             int b=1;
125             while ((c=bufferedReader.read())!=-1){//一个字节的读取
126                 char ch=(char) c;//将int型转换成char型
127                 if (map.get(ch)==null){//如果是第一次记录
128                     map.put(ch,1);
129                 }else {
130                     map.put(ch, map.get(ch)+1);//get方法得到的value值存放的是出现次数
131                 }
132             }
133             //遍历map中的key-value
134             Set set=map.entrySet();
135             Iterator iterator=set.iterator();
136             while (iterator.hasNext()){
137                 Map.Entry entry1=(Map.Entry) iterator.next();//进行强转
138                 bufferedWriter.write(entry1.getKey()+":"+entry1.getValue()+"\n");
139             }
140         } catch (IOException e) {
141             e.printStackTrace();
142         } finally {
143             try {
144                 bufferedReader.close();
145             } catch (IOException e) {
146                 e.printStackTrace();
147             }
148             try {
149                 bufferedWriter.close();
150             } catch (IOException e) {
151                 e.printStackTrace();
152             }
153         }
154     }
155 }