第八次總結 檔案操作
阿新 • • 發佈:2020-07-25
- 基本資料型別的輸入輸出流
- 物件輸入和輸出流
- 字元流
- 統計String.java原始檔總共有多少行?其中多少行註釋?多少行原始碼?
1.基本資料型別的輸入輸出流
- DataOutputStream 基本資料型別的輸出流
- DataInputStream 基本資料型別的輸入流
2..物件輸入和輸出流
- ObjectOutputStream 物件輸出流
- ObjectInputStream 物件輸入流
物件不可以直接寫到資料流中
如果需要將物件寫到資料流中,就必須要將物件序列化
序列化就是將物件轉換成一個可以寫到流中的過程
如何序列化?
實現序列化介面Serializable
反序列化
將物件資料從資料流中的有序資料變成物件的過程
3.字元流
字元輸入流
Reader
InputStreamReader 位元組到字元的轉換輸入流
String path="D:\\aa\\aa.log"; //建立檔案位元組輸入流 FileInputStream fis = new FileInputStream(path); //將位元組流轉換成字元流 InputStreamReader reader = new InputStreamReader(fis); //讀取一個字元int t = reader.read(); while(t!=-1){ char c =(char)t; System.out.print(c); t = reader.read(); } reader.close(); fis.close();
FileReader 檔案字元輸入流
String path="D:\\aa\\aa.log"; //建立檔案字元輸入流 FileReader reader = newFileReader(path); int t = reader.read(); while (t!=-1){ char c = (char)t; System.out.print(c); t = reader.read(); } reader.close();
BufferedReader 緩衝字元輸入流
String path="D:\\aa\\aa.log"; //建立檔案字元輸入流 FileReader reader = new FileReader(path); //包裝成緩衝字元流 BufferedReader br = new BufferedReader(reader); //讀取一行資料 String str = br.readLine(); while(str!=null){ System.out.println(str); str =br.readLine(); } br.close(); reader.close();
字元輸出流
Writer
OutputStreamWriter 位元組到字元的轉換輸出流
FileWriter 檔案字元輸出流
BufferedWriter 緩衝字元輸出流
4.統計String.java原始檔總共有多少行?其中多少行註釋?多少行原始碼?
public static void main(String[] args) throws Exception{ int sum=0; int zhushi=0; int code=0; int kong=0; String path = "D:\\11\\a.txt"; FileReader fr = new FileReader(path); BufferedReader br = new BufferedReader(fr); String str = br.readLine(); while(str!=null){ sum++;//總行數 str=str.trim(); if(str.startsWith("/")||str.startsWith("*")){ zhushi++; }else if(str.length()==0){ kong++; }else{ code++; } str = br.readLine(); } System.out.println("總行數:"+sum); System.out.println("註釋數:"+zhushi); System.out.println("程式碼數:"+code); System.out.println("空行數:"+kong); }