缓冲流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 Mapmap=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 }