今天看了Think in Java中關於IO 的一小部分。通常來講JDK中的IO分爲java
1.字節流,字符流。緩存
其中字節流的接口爲InputStream,OutputStream。字符流的接口爲Reader,Writer。app
2.輸入流,輸出流spa
其中InputSteam,Reader爲輸入流,OutputStream,Writer爲輸出流。code
3.InputSteam,Reader都有read()的方法。OutputSteam,Writer都有write()的方法繼承
3.有一個FilterInputSteam 和FilterOutputSteam是裝飾器的接口,控制流的類,給裝飾器提供接口。接口
4.裝飾器有不少,基本上都繼承了FilterInputSteam或者FileOutpuStream。用的比較多的裝飾器有BufferedWriter,裏面作了緩存的一些做用,在要真正寫入的時候須要flush一下。BufferReader有一個很是使用的方法readLine(),能夠讀取一行。get
5.字節流轉化爲字符流。it
OutputStreamWriter writer = new OutputStreamWriter(InputStream in);
InputStreamReader reader = new InputStreamReader(OutputStream out);
附上寫文件的幾種方法class
第一種寫文件的方法:
FileOutputStream outFileStream = new FileOutputStream(new File("/home/liubin/test.txt"),true); OutputStreamWriter writer = new OutputStreamWriter(outFileStream); BufferedWriter bw = new BufferedWriter(writer); bw.append("北京時間:" + new Date() + "\n"); // bw.write("北京時間:" + new Date()); bw.flush(); bw.close();
第二種寫文件的方法:
FileWriter writer = new FileWriter(new File("/home/liubin/test.txt"), true); writer.write("北京時間:" + new Date() + "\n"); writer.close();
第三種寫文件的方法:
FileOutputStream outFileStream = new FileOutputStream(new File("/home/liubin/test.txt"), true); byte b[] = "紐約----".getBytes(); outFileStream.write(b);
附上讀文件的幾種方法
(讀的時候若是文件包含了中文或者其餘大於8位的字符就必需要用字符的方式顯示,否則會有亂碼的)
第一種讀文件的方法(字符):
FileInputStream file = new FileInputStream(new File("/home/liubin/test.txt")); InputStreamReader reader = new InputStreamReader(file); BufferedReader br = new BufferedReader(reader); String line = null; while((line = br.readLine()) != null){ System.out.println(line); } br.close();
第二種讀文件的方法(字節)
FileReader fileReader = new FileReader(new File("/home/liubin/test.txt")); // int c = -1; // while ( (c = fileReader.read()) != -1){ // System.out.println((char)c); // } char[] ch = new char[99999]; while(fileReader.read(ch) != -1){ System.out.println(ch); } fileReader.close(); }
後面還有好多種。。
老是你會發現,有了裝飾器模式以後java中IO實在是太靈活了。掌握幾種,看看jdk就能很快掌握其餘的。