Java IO讀取文件,寫入文件

 

一、Java把這些不同來源和目標的數據都統一抽象爲數據流。

  Java語言的輸入輸出功能是十分強大而靈活的。

  在Java類庫中,IO部分的內容是很龐大的,因爲它涉及的領域很廣泛:標準輸入輸出,文件的操作,網絡上的數據流,字符串流,對象流,zip文件流。

  這裏介紹幾種讀寫文件的方式

二、InputStream、OutputStream(字節流)

複製代碼

     //讀取文件(字節流)
        InputStream in = new FileInputStream("d:\\1.txt");
        //寫入相應的文件
        OutputStream out = new FileOutputStream("d:\\2.txt");
        //讀取數據
        //一次性取多少字節
        byte[] bytes = new byte[2048];
        //接受讀取的內容(n就代表的相關數據,只不過是數字的形式)
        int n = -1;
        //循環取出數據
        while ((n = in.read(bytes,0,bytes.length)) != -1) {
            //轉換成字符串
            String str = new String(bytes,0,n,"GBK"); #這裏可以實現字節到字符串的轉換,比較實用
            System.out.println(str);
            //寫入相關文件
            out.write(bytes, 0, n);
        }
        //關閉流
        in.close();
        out.close();

複製代碼

三、BufferedInputStream、BufferedOutputStream(緩存字節流)使用方式和字節流差不多,但是效率更高(推薦使用)

複製代碼

    
        //讀取文件(緩存字節流)
        BufferedInputStream in = new BufferedInputStream(new FileInputStream("d:\\1.txt"));
        //寫入相應的文件
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d:\\2.txt"));
        //讀取數據
        //一次性取多少字節
        byte[] bytes = new byte[2048];
        //接受讀取的內容(n就代表的相關數據,只不過是數字的形式)
        int n = -1;
        //循環取出數據
        while ((n = in.read(bytes,0,bytes.length)) != -1) {
            //轉換成字符串
            String str = new String(bytes,0,n,"GBK");
            System.out.println(str);
            //寫入相關文件
            out.write(bytes, 0, n);
        }
        //清楚緩存
        out.flush();
        //關閉流
        in.close();
        out.close();

複製代碼

四、InputStreamReader、OutputStreamWriter(字節流,這種方式不建議使用,不能直接字節長度讀寫)。使用範圍用做字符轉換

複製代碼

     //讀取文件(字節流)
        InputStreamReader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK");
        //寫入相應的文件
        OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("d:\\2.txt"));
        //讀取數據
        //循環取出數據
        byte[] bytes = new byte[1024];
        int len = -1;
        while ((len = in.read()) != -1) {
            System.out.println(len);
            //寫入相關文件
            out.write(len);
        }
        //清楚緩存
        out.flush();
        //關閉流
        in.close();
        out.close();

複製代碼

 

五、BufferedReader、BufferedWriter(緩存流,提供readLine方法讀取一行文本)

複製代碼

     //讀取文件(字符流)
        BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK"));#這裏主要是涉及中文
        //BufferedReader in = new BufferedReader(new FileReader("d:\\1.txt")));
        //寫入相應的文件
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:\\2.txt"),"GBK"));
        //BufferedWriter out = new BufferedWriter(new FileWriter("d:\\2.txt"));
        //讀取數據
        //循環取出數據
        String str = null;
        while ((str = in.readLine()) != null) {
            System.out.println(str);
            //寫入相關文件
            out.write(str);
            out.newLine();
        }
        
        //清楚緩存
        out.flush();
        //關閉流
        in.close();
        out.close();

複製代碼

六、Reader、PrintWriter(PrintWriter這個很好用,在寫數據的同事可以格式化)

複製代碼

     //讀取文件(字節流)
        Reader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK");
        //寫入相應的文件
        PrintWriter out = new PrintWriter(new FileWriter("d:\\2.txt"));
        //讀取數據
        //循環取出數據
        byte[] bytes = new byte[1024];
        int len = -1;
        while ((len = in.read()) != -1) {
            System.out.println(len);
            //寫入相關文件
            out.write(len);
        }
        //清楚緩存
        out.flush();
        //關閉流
        in.close();
        out.close();

複製代碼

七、基本的幾種用法就這麼多,當然每一個讀寫的使用都是可以分開的。爲了更好的來使用io。流裏面的讀寫,建議使用BufferedInputStream、BufferedOutputStream

轉載自:https://www.cnblogs.com/ll409546297/p/7197911.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章