1. 程式人生 > 實用技巧 >Io流介紹及用法

Io流介紹及用法

一、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位元組數(字元位數)!