Java --- IO流

一 IO流框架

在這裏插入圖片描述

二 IO知識點

(一) 基本概念

1 IO流

A 什麼是IO流
	I/O,即輸入(Input)輸出(Output),IO流指的是數據像連綿的流體一樣進行傳輸。

B 作用
	在本地磁盤或網絡上傳輸(讀/寫)數據

C 分類
	按數據流向分:  輸入流 輸出流
	按操作方式分:  字節流: InputStream OutputStream  
				 字符流: Reader Writer

2 IO流體系

在這裏插入圖片描述
在這裏插入圖片描述

3 IO流操作異常

A 什麼是異常: 程序出錯

B 異常分類:  異常Exception 和錯誤Error

C 處理異常:  拋出或捕獲

4 File類

A 概念
	文件,文件夾,一個File對象代表磁盤上的某個文件或文件夾

B 構造方法
	 File(String pathname)
	 File(String parent, String child)
	 File(File parent, String child)

C 成員方法
	   createNewFile():創建文件
	   mkdir()和mkdirs():創建目錄
	   isDirectory():判斷File對象是否爲目錄
	   isFile():判斷File對象是否爲文件
	   exists():判斷File對象是否存在
	   getAbsolutePath():獲取絕對路徑
		    從本地磁盤開始的路徑
		    舉例:C:\Users\itcast\Desktop
	   getPath():獲取文件的相對路徑
		    相對某一位置的路徑
		    Java項目中,相對路徑從項目名開始
	   getName():獲取文件名
	   list():獲取指定目錄下所有文件(夾)名稱數組
	   listFiles():獲取指定目錄下所有文件(夾)File數組

(二) IO流的使用

1 數據流讀寫步驟:

    //1 創建字符/字節輸入流對象, 關聯數據源文件
    //2 創建字符/字節輸出流對象, 關聯目的地文件
    //3 定義變量,記錄讀取到的內容
    //4 循環讀取, 只有條件滿足就一直讀,將讀到的內容賦值給變量
    //5 將讀到的內容寫入目的地文件中
    //6 釋放資源

2 在實際操作中, 我們最常用高效字符流和高效字節流.

A 字符緩衝流拷貝文件的標準代碼: 一次讀取一個字符數組

高效字符流:  字符緩衝流自帶緩衝區, 大小是8192個字符, 就是16KB
底層:  是按字符數組進行讀寫的
   public class TestUtils {
   
       public static void main(String[] args) throws IOException {
   			 BufferedReader br = new BufferedReader(new FileReader("C:\Users\pc\Desktop\1.txt"));
           	 BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1.txt"));
   	       	 int len;
   		     while((len = br.read()) != -1) { 
   		            bw.write(len);
   		     }
   		     br.close();
   		     bw.close();		
   	   }
   }
   public class TestUtils {
   
       public static void main(String[] args) throws IOException {
   			 BufferedReader br = new BufferedReader(new FileReader("C:\Users\pc\Desktop\1.txt"));
           	 BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1.txt"));
           	 char [] chs = new char[2048];
   	       	 int len;
   		     while((len = br.read(chs)) != -1) { 
   		            bw.write(chs, 0, len);
   		     }
   		     br.close();
   		     bw.close();		
   	   }
   }

B 字節緩衝流拷貝圖片的標準代碼: 一次讀取一個字節數組

高效字節流:  字節緩衝流自帶緩衝區, 大小是8192個字節, 就是8KB
底層:  是按字節數組進行讀寫的
	public class TestUtils {
	
	    public static void main(String[] args) throws IOException {
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\Users\\Public\\Pictures\\Sample Pictures\\flower.jpg"));
        	BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\flower.jpg"));
        	int len;
	        while((len = bis .read()) != -1) {
	            bos.write(len);
	        }
	        bis .close();
	        bos.close();
		}
	}
	public class TestUtils {
	
	    public static void main(String[] args) throws IOException {
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\Users\\Public\\Pictures\\Sample Pictures\\flower.jpg"));
        	BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\flower.jpg"));
        	byte[] bytes = new bytes [2048];
        	int len;
	        while((len = bis .read(bytes )) != -1) {
	            bos.write(bytes , 0, len);
	        }
	        bis.close();
	        bos.close();
		}
	}

C 字符緩衝流拷貝文件 一次讀取一行

   public class TestUtils {
   
       public static void main(String[] args) throws IOException {
   			 BufferedReader br = new BufferedReader(new FileReader("C:\Users\pc\Desktop\1.txt"));
           	 BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1.txt"));
   	       	 String str;
   		     while((str= br.readLine() ) != null) { 
   		            bw.write(str);
   		            //注意: 不同操作系統有不同的換行符
   		            bw.newLine();
   		     }
   		     br.close();
   		     bw.close();		
   	   }
   }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章