字符流、字節流、節點流、處理流詳釋


字節流和字符流是流的一種划分,按照處理流的數據單位進行的划分,兩類都分為輸入和輸出操作,字節流輸出數據OutputStream,輸入InputStream
字符流輸出Writer,輸入Reader完成。四個都是抽象類。
字符流處理的單元為兩個字符的Unicode字符,操作字符、字符數組或字符串。字節流處理單元為1個字節,操作字節和字節數組,字節流是最基本的,所有inputstream和outputstream的子類都是字節流,主要用在處理二進制數據,按照字節來處理的,實際中很多的數據是文本,於是又產生了字符流,它是按照虛擬機的編碼來處理,也就是要進行字符集的轉化,這兩個之間通過inputStreamReader和outputStreamWriter(轉換流)來關聯,實際上是通過byte[]和string來關聯的。
節點流和處理流的區別;
字節流和處理流是流的另外一種划分,按照功能不同進行的划分,節點流可以從或者向一個特定的節點讀寫數據,處理流是對一個數據已存在的流的連接和封裝,通過所瘋轉的流的功能調用實現數據讀寫,如BufferedReader.處理流的構造方法總是要帶一個其他的流對象做參數,一個流對象經過其他的流的多次包裝稱為流的鏈接。
注意,word文檔不是純文本文檔,除了文字還包含很多格式信息,不能用字符流處理,可以用字節流處理。

附:將word內容寫進txt后,用Java類讀到后台的Java代碼:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;

public class TestRead {

public static void main(String[] args) {
testReader();

}
static void testReader(){
File f = new File("d:/a.txt");
FileInputStream fis = null;
try {
fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis,"utf-8");
int temp = 0;
while((temp=isr.read())!=-1){
char c = (char) temp;

System.out.print(c);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if (fis!=null) {
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM