1. 程式人生 > 實用技巧 >第八次總結 檔案操作

第八次總結 檔案操作

  1. 基本資料型別的輸入輸出流
  2. 物件輸入和輸出流
  3. 字元流
  4. 統計String.java原始檔總共有多少行?其中多少行註釋?多少行原始碼?

1.基本資料型別的輸入輸出流

  1. DataOutputStream 基本資料型別的輸出流
  2. DataInputStream 基本資料型別的輸入流

2..物件輸入和輸出流

  1. ObjectOutputStream 物件輸出流
  2. 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 = new
FileReader(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);
    }