java中的io
最基本的是根據處理數據類型的不同分為:字符流和字節流
字節流:數據流中最小的數據單元是字節
字符流:數據流中最小的數據單元是字符, Java中的字符是Unicode編碼,一個字符占用兩個字節。
字符流的由來: Java中字符是采用Unicode標準,一個字符是16位,即一個字符使用兩個字節來表示。為此,JAVA中引入了處理字符的流。因為數據編碼的不同,而有了對字符進行高效操作的流對象。本質其實就是基於字節流讀取時,去查了指定的碼表
最常用的字節流是inputstream和OutputStream,是其他字節流的父類;
最常用的字符流父類是Reader和Writer,InputStreamReader是一個連接字節流和字符流的橋梁,它將字節流轉變為字符流; OutputStreamWriter是OutputStream到Writer轉換的橋梁,
個人在理解這些內容時候認為,電腦中磁盤上存的文件都是以字節形式存儲,
inputstream和OutputStream可以直接去操作這些文件,所以認為其是字節流
例如 InputStream fis = new FileInputStream("d:/a.txt");
read = fis.read();
System.out.println(read);
而InputStreamReader,OutputStreamWriter等都是需要借助FileInputStream、OutputStream去操作,所以理解其為字符流
例如 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d:/a.txt"),"UTF-8"));
String line = br.readLine();
System.out.println(line);
while((line = br.readLine())!=null) {
System.out.println(line);
}
br.close();
java中的io