Io流介紹及用法
阿新 • • 發佈:2020-09-16
一、LO流介紹:
lo流是用來處理裝置之間資料傳輸的!
二、 lo流分類:
流向分類
輸入流(inputStream和Reader):
輸出流(OutputStream和Writer):
如:記憶體卡和硬碟!
硬碟內資料傳入記憶體卡則是輸入流!記憶體卡向硬碟傳輸資料則是輸出流!
操作型別分類
位元組流(inputStream和OutputStream):位元組流可以操作任何資料(計算機資料都是位元組形式儲存)
字元流(Reader和Writer):字元流只能操作純字元資料,防止亂碼
相對路徑和絕對路徑:
相對路徑:指某個檔案路徑和別的檔案路徑關係的
絕對路徑:硬碟是真正存在的路徑!
三、常用Io流類:
四、
目的:使用FileInputStream讀取檔案
* 思路:
* 使用FileInputStream讀取檔案
* 專案右鍵建立File,建立txt檔案
* 在txt輸入字元
* 返回public頁面,
* 建立和txt通道(找到txt相對路徑)
* 列印txt字元
程式碼:
public class FilelnputStreamText01 { public static void main(String[]ages){ FileInputStream fis=null; // 使用讀取檔案,需要新增被讀取路徑,加雙\\,在異常最大化,(路徑尋找,a.txt右擊properties就可以找到路徑) try { //建立通道 fis =new FileInputStream("D:\\myeclipse\\chapter_01\\a.txt"); //無參型別,返回int值,如果列印的是字母(字碼值)讀取完畢返回-1 //第一種列印 /*System.out.println(fis.read()); System.out.println(fis.read());*/ //第二種列印!效率不高,一個一個字元列印 /* int temp; while((temp = fis.read()) != -1){ //強行轉換為char型別,java數值用unicode表示,轉換為char型別就可以用原來數值來表示 char c = (char)temp; System.out.println(c);*/ /* }*/ //第三種列印 //定義byte陣列告訴系統一次讀取幾個位元組,減少記憶體和硬碟之間通訊,可以提高效率 byte[]arr=new byte[5]; int temp; //有參的read方法返回的int值是讀取幾個位元組 while((temp = fis.read(arr)) !=-1){ System.out.println(new String(arr,0,temp)); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); //finally即使上面程式碼報錯,finally裡面程式碼也會執行,close減少記憶體 }finally{ try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
執行結果:第一種方法,列印幾個,就執行幾個結果!程式碼比較重複
第二種方法:全部打印出來,只不過字元卻是一個一個被打印出來:如:123,打印出來就是:1,2,3(隔一行)
第三種方法:直接全部打印出來,只要給byte位元組數(字元位數)!