處理流類型:
1、處理流之首先緩沖流:
解釋:
例子:TestBufferStream1.java
package com.zhj.www;import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;public class TestBufferStream1 {public static void main(String[] args) {try {FileInputStream fileInputStream = new FileInputStream("E:\\JavaCode\\eclipse-workspace\\TestFileWriter\\src\\com\\zhj\\www\\Hello.dat");//從某個文件開始讀入BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);int c = 0;System.out.println(fileInputStream.read());System.out.println(fileInputStream.read());fileInputStream.mark(100);for(int i = 0;i< 10 && (c = bufferedInputStream.read()) != -1;i++) {System.out.println(c + " ");}System.out.println();fileInputStream.reset();for(int i = 0;i< 10 && (c = bufferedInputStream.read()) != -1;i++) {System.out.println(c + " ");}fileInputStream.close();} catch (IOException e) {e.getStackTrace();}}
}
運行結果:
?????
什么是流,就是管道,在一個文件中插了一條管道,可以讀入,也可以寫入。節點流也可以這么理解。
處理流呢?在節點流的基礎上,外面又包了一層管道。
例子:TestBufferStream2.java
package com.zhj.www;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TestBufferStream2 {public static void main(String[] args) {try {BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("E:\\JavaCode\\eclipse-workspace\\TestBufferStream2\\src\\com\\zhj\\www\\HelloWorld.txt"));BufferedReader bufferedReader = new BufferedReader(new FileReader("E:\\JavaCode\\eclipse-workspace\\TestBufferStream2\\src\\com\\zhj\\www\\HelloWorld.txt"));String string = null;for(int i = 1;i<=100;i++) {string= String.valueOf(Math.random());bufferedWriter.write(string);bufferedWriter.newLine();}bufferedWriter.flush();while ((string = bufferedReader.readLine()) != null) {System.out.println(string);}bufferedWriter.close();bufferedReader.close();} catch (IOException e) {e.printStackTrace();}}
}
2、處理流之轉換流:
舉個例子:(TestTransForm1.java)
package com.zhj.www;
import java.io.*;
public class TestTransForm1 {public static void main(String[] args) {try {//轉換流:OuputStream轉化為Writer;OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream("E:\\JavaCode\\eclipse-workspace\\TestTransForm1\\src\\com\\zhj\\www\\hello.txt"));outputStreamWriter.write("Hello_World! ");System.out.println(outputStreamWriter.getEncoding());//輸出編碼方式outputStreamWriter.close();outputStreamWriter =new OutputStreamWriter(new FileOutputStream("E:\\JavaCode\\eclipse-workspace\\TestTransForm1\\src\\com\\zhj\\www\\hello.txt", true),"ISO8859_1");outputStreamWriter.write("Heihei!");System.out.println(outputStreamWriter.getEncoding());outputStreamWriter.close();} catch (Exception e) {e.getStackTrace();}}
}
分析這個例子:
再舉個例子:(TestTransForm2.java)
package com.zhj.www;import java.io.*;public class TestTransForm2 {public static void main(String[] args) {InputStreamReader inputStreamReader = new InputStreamReader(System.in);BufferedReader bufferedInputStream = new BufferedReader(inputStreamReader);String string= null;try {string =bufferedInputStream.readLine();while (string!= null) {if (string.equalsIgnoreCase("exit")) {break;}System.out.println(string.toUpperCase());string = bufferedInputStream.readLine();}bufferedInputStream.close();} catch (IOException e) {e.getStackTrace();}}}
分析這個例子:
3、處理流之數據流:
直接上例子:(TestDataStream.java)
package com.zhj.www;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class TestDataStream {public static void main(String[] args) {ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream);try {dataOutputStream.writeDouble(Math.random());dataOutputStream.writeBoolean(true);ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());System.out.println(byteArrayInputStream.available());//9DataInputStream dataInputStream = new DataInputStream(byteArrayInputStream);System.out.println(dataInputStream.readDouble());System.out.println(dataInputStream.readBoolean());dataOutputStream.close();dataInputStream.close();} catch (IOException e) {e.getStackTrace();}}
}
//Math.random()是令系統隨機選取大于等于 0.0 且小于 1.0 的偽隨機 double 值,是Java語言常用代碼
簡單流程分析:
4、處理流之Print流:
舉個例子:TestPrintStream1.java
分析:
代碼意思:就是將從鍵盤輸入的數據,保存到log.dat;然后再從log.data輸出到命令行。
再舉個例子:TestPrintStream2.java
簡單分析:
再在舉個例子:TestPrintStream3.java
簡單分析:
代碼的意思就是:把從鍵盤輸入的內容保存到日志文件中,只要從鍵盤輸入的不為null,就繼續把從鍵盤輸入的信息保存到指定的日志文件中,但當輸入的等于exit,就停止往日志中寫。
5、處理流之Object流: