Java学习 之 IO流(转换流、缓冲流)
1 /* 2 3 OutputStreamWriter:将字符串按照指定的编码表转换成字节,在使用字节流将字节写出去 4 5 */ 6 7 public class OutputStreamWriterDemo{ 8 9 public static void main(String[] args) throws IOException{ 10 11 //字符转字节的转换流 12 13 writeCN(); 14 15 } 16 17 public static void writeCN() throws IOException{ 18 19 //创建与文件关联的字节输出流对象 20 21 FileOutputStream fos = new FileOutputStream("c:\\a.txt"); 22 23 //创建可以把字符转换成字节的转换流对象,并指定编码 24 25 OutputStreamWriter osw = new OutputStreamWriter(fos , "utf-8"); 26 27 //调用转换流,把文字写出去,其实是写到转换流的缓冲区 28 29 osw.write("你好");//写入缓冲区 30 31 osw.close(); 32 33 } 34 35 } 36 37 /* 38 39 InputStreamReader:是字节流通向字符流的桥梁,使用指定的字符编码表读取字节并将其解码为字符 40 41 */ 42 43 public class InputStreamReaderDemo{ 44 45 public static void main(String[] args) throws IOException{ 46 47 //字节转换字符流的转换流 48 49 readCN(); 50 51 } 52 53 public static void readCN() throws IOException{ 54 55 //创建读取文件的字节流对象 56 57 FileInputStream fis = new FileInputStream("c:\\a.txt"); 58 59 //创建转换流对象 60 61 InputStreamReader isr = new InputStreamReader(fis , "utf-8"); 62 63 //使用转换流去读字节流中的字节 64 65 int ch = 0; 66 67 while((ch = isr.read()) != -1){ 68 69 System.out.println((char)ch); 70 71 } 72 73 isr.close(); 74 75 } 76 77 } 78 79 /* 80 81 缓冲流: 82 83 字节缓冲输出流:BufferedOutputStream 84 85 构造方法:public BufferedOutputStream(OutputStream out)创建一个新的缓冲输出流,以将数据写入指定的底层输出流 86 87 */ 88 89 public class BufferedOutputStreamDemo{ 90 91 public static void main(String[] args) throws IOException{ 92 93 //写数据到文件的方法 94 95 write(); 96 97 } 98 99 /* 100 101 写数据到文件的方法 102 103 1、创建流 104 105 2、写数据 106 107 3、关闭流 108 109 */ 110 111 public static void write() throws IOException{ 112 113 //创建基本的字节输出流 114 115 FileOutputStream fos = new FileOutputStream("a.txt"); 116 117 //使用高效的流,把基本的流进行封装,实现速度的提升 118 BufferedOutputStream bos = new BufferedOutputStream(fos); 119 120 //写数据 121 122 out.write("你好".getBytes()); 123 124 //关闭流 125 126 out.close(); 127 128 } 129 130 } 131 132 /* 133 134 字节缓冲输入流:BufferedInputStream 135 136 构造方法:public BufferedInputStream(InputStream in) 137 138 */ 139 140 public class BufferedInputStream{ 141 142 public static void main(String[] args) throws IOException{ 143 144 read(); 145 146 } 147 148 /* 149 150 从文件中读取数据 151 152 1、创建缓冲流对象 153 154 2、读数据,打印 155 156 3、关闭 157 158 */ 159 160 public static void read() throws IOException{ 161 162 //创建缓冲流对象 163 164 FileInputStream fis = new FileInputStream("a.txt"); 165 166 //把基本的流包装成高效的流 167 168 BufferedInputStream bis = new BufferedInputStream(fis); 169 170 //读数据 171 172 int ch = -1; 173 174 while((ch = bis.read()) != -1){ 175 176 System.out.println((char)ch); 177 178 } 179 180 bis.close(); 181 182 } 183 184 } 185 186 /* 187 188 字符缓冲输入流:BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取 189 190 public String readLine()读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回true 191 192 字符缓冲输出流:BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入 193 194 void newLine()根据当前的系统,写入一个换行符 195 196 */ 197 198 public class BufferedWriterDemo{ 199 200 public static void main(String[] args) throws IOException{ 201 202 //创建流 203 204 //基本字符输出流 205 206 FileWriter fw = new FileWriter("file.txt"); 207 208 //把基本的流进行包装 209 210 BufferedWriter bw = new BufferedWriter(fw); 211 212 //写数据 213 214 for(int i = 0 ; i < 5 ; i++){ 215 216 bw.write("hello"); 217 218 bw.newLine(); 219 220 } 221 222 //关闭流 223 224 bw.close(); 225 226 } 227 228 } 229 230 public class BufferedWriterDemo{ 231 232 public static void main(String[] args) throws Exception{ 233 234 //创建流 235 236 BufferedReader br = new BufferedReader("file.txt"); 237 238 //读数据 239 240 //一次一个字符 241 242 //一次一个字符数组 243 244 //一次读取文本中一行的字符串内容 245 246 String line = null; 247 248 while((line = br.readLine()) != -1){ 249 250 System.out.println(line); 251 252 } 253 254 //关闭流 255 256 line.close(); 257 258 } 259 260 }