日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java io流顶层_Java中的IO流(一)

發布時間:2025/3/20 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java io流顶层_Java中的IO流(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,IO流的分類

A,按照操作的對象不同可分為字節流與字符流

B,按照流的方向不同可分為輸入(指從外部存儲設備拿文件到內存)流也叫讀與輸出(指從內存把文件寫入到外部存儲設備)流也叫寫

注:字節流可以操作任何類型的文件,字符流是后來才出現的,主要用來操作字符類的文件;字符流的出現源于編碼表的問題,一開始計算機內使用ANSII編碼,后來每種語言都有了自己的編碼方式即編碼表,為了統一這些編碼信息國際標準化組織便產生了Unicode編碼信息表來把世界各國的語言都包括在內,此編碼表采用兩個字節即16位來存儲每一個字符,java內置的編碼表便是Unicode編碼;字符流是當讀取文件的時候,以字節的形式讀取后,查詢編碼表看具體使用哪種編碼方式,查到以后再進行文件的輸出,所以字符流是字節流+查編碼表的封裝形式。

二,流的頂層基類

所有流的操作無非兩種形式:讀與寫;所以Java便所這兩種操作形式抽取出了字節流與字符流的兩種頂層的基類

字節流的頂層基類:InputStream與OutputStream

字符流的頂層基類:Read與Write

三,字符流FileWriter

1   public static void function_demo1() throws IOException {

2 // 創建字符寫入流對象,接收一個要寫入的文件路徑對象,此文件若不存在則新創建一個文件,若已存在則覆蓋的文件

3 FileWriter fw = new FileWriter("demo1.txt");

4 fw.write("abcdefg");// 把內容寫入緩沖區

5 fw.flush();// 從緩沖區把內容刷入文件中

6 fw.close();// 關閉流

7 }

注:以上代碼中fw.flush()是把內容從緩沖區刷入到文件中去,但是fw.close()方法是先把內容從緩沖區刷入到文件中去即先調用flush方法,所以fw.flush()可以不用

FileWrite在寫時的換行與續寫

1 // 獲取系統換行的符號

2 private static final String LINE_SEPARATOR = System.getProperty("line.separator");

3 public static void function_demo2() throws IOException {

4 FileWriter writer = new FileWriter("demo.txt", true);// 創建寫入流對象

5 // 把內容寫入到緩沖區

6 writer.write("abcdef綿" + LINE_SEPARATOR + "中國人啊吼叫職了");

7 // 把緩沖區里的內容刷入到文件系統中

8 // writer.flush();

9 // 關閉流,在關閉之前會先把緩沖區里的內容刷入到文件系統然后才關閉流;若用此關閉流可不用手動調用flush

10 writer.close();

11 }

注:FileWriter在支持續寫的時候提供了一個帶兩個參數的構造函數,當傳遞為true時即可支持續寫;換行可調用系統提供的換行符號

四,字符流FileReader

1   public static void function_demo3() throws IOException {

2 // 創建讀取流對象,指定需要讀取的文件地址

3 FileReader reader = new FileReader("demo.txt");

4 // 聲明一個變量接收讀取到的字符

5 int ch;

6 // 調用read方法讀取文件中的字符,當讀取到文件的末尾的時候read方法返回-1

7 while ((ch = reader.read()) != -1) {

8 System.out.println((char) ch);

9 }

10 // 關閉流

11 reader.close();

12 }

注:此讀取方式為一個字符的讀取,每讀取一個字符便寫到控制臺,以下代碼演示高效的讀取,即聲明一個緩沖區的數組,把每次所讀到的內容先放入緩沖數組中去,然后再一次性寫到文件中

1 public static void function_demo4() throws IOException {

2 //讀取流對象

3 FileReader reader = new FileReader("demo.txt");

4 //每次讀取到的字符放入的緩沖數組區

5 char[] buf = new char[1024];

6 //每次讀取到的字符數

7 int i;

8 //循環讀取,每次read一次把讀取到的內容放入buf字符數組,讀到最后會返回-1

9 while ((i = reader.read(buf)) != -1) {

10 //把讀取到的字符轉為字符串,每次轉換的數量為讀取到的字符數

11 System.out.println(new String(buf, 0, i));

12 }

13 reader.close();

14 }

下面用兩種方式實現文件的復制功能

private static void function_demo5() throws IOException {

FileReader fr = new FileReader("demo.txt");//創建讀取流對象

FileWriter fw = new FileWriter("demo2.txt");//創建寫入流對象,若文件不存在則創建;若存在則覆蓋

int ch;//存儲讀取到的字符

//循環讀取文件中的數據

while ((ch = fr.read()) != -1) {

fw.write(ch);//把每次讀到的內容寫入到新文件中

}

fw.close();//關閉

fr.close();//關閉

}

高效的復制方式

1 private static void function_demo6() throws IOException {

2 FileReader fr = new FileReader("demo.txt");// 創建讀取流對象

3 FileWriter fw = new FileWriter("demo3.txt");// 創建寫入流對象,若文件不存在則創建,若存在則覆蓋

4 char[] buf = new char[4096];//緩存數組

5 int ch;// 存儲讀取到的字符

6 // 循環讀取文件中的數據

7 while ((ch = fr.read(buf)) != -1) {//把每次讀取到的內容放入緩存數組中

8 fw.write(buf, 0, ch);//從緩存數組中把內容讀出來

9 }

10 fw.close();//關閉流

11 fr.close();//關閉流

12 }

五,高效的讀取流BufferedReader

從字符輸入流中讀取文本,緩沖各個字符,從而實現字符、數組和行的高效讀取。注意,此類可以直接讀取行,由此也說明此類是專門為高效的讀取文件數據的方式

1   private static void function_demo7() throws IOException {

2 FileReader fr = new FileReader("demo.txt");//讀取流對象

3 BufferedReader bReader = new BufferedReader(fr);//緩沖讀取流對象,需要傳入讀取Reader的實現類

4 int ch;

5 while ((ch = bReader.read()) != -1) {//此read為增強了的read方法,用的裝飾器模式

6 System.out.println((char) ch);

7 }

8 bReader.close();//關閉該流并釋放與之關聯的所有資源;即也把讀取流的對象fr給關閉了,不需要再手動調用fr.close()

9 }

帶緩沖數組的讀取方式

1   private static void function_demo7() throws IOException {

2 FileReader fr = new FileReader("demo.txt");// 讀取流對象

3 BufferedReader bReader = new BufferedReader(fr);// 緩沖讀取流對象,需要傳入讀取Reader的實現類

4 int ch = 0;

5 char[] buff = new char[1024];

6 while ((ch = bReader.read(buff)) != -1) {// 此read為增強了的read方法,用的裝飾器模式

7 System.out.println(new String(buff, 0, ch));

8 }

9 bReader.close();// 關閉該流并釋放與之關聯的所有資源;即也把讀取流的對象fr給關閉了,不需要再手動調用fr.close()

10 }

讀取行

1   private static void function_demo8() throws IOException {

2 FileReader fr = new FileReader("demo.txt");

3 BufferedReader bReader = new BufferedReader(fr);

4 String line = null;//獲取每次讀到的行內容

5 while ((line = bReader.readLine()) != null) {//如果讀取到了最后,則返回null

6 System.out.println(line);

7 }

8 bReader.close();

9 }

六,高效的寫入流BufferedWriter

將文本寫入字符輸出流,緩沖各個字符,從而提供單個字符、數組和字符串的高效寫入。此流寫入的時候提供了一個newLine方法,可換行。

1   private static void function_demo9() throws IOException {

2 FileWriter fw = new FileWriter("demo4.txt");

3 BufferedWriter bw = new BufferedWriter(fw);

4 bw.write("LioneTree");

5 bw.newLine();

6 bw.write("go kb go kb nnw huo kb ");

7 bw.close();

8 }

七,使用BufferedReader與BufferedWriter實現文件復制的功能

1   private static void function_demo10() throws IOException {

2 FileReader fReader = new FileReader("demo.txt");//讀取流對象

3 BufferedReader bReader = new BufferedReader(fReader);//緩沖讀取流對象,傳入fReader讀取流對象

4 FileWriter fWriter = new FileWriter("demo5.txt");//寫入流對象

5 BufferedWriter bWriter = new BufferedWriter(fWriter);//緩沖寫入流對象,傳入bWriter寫入流對象

6 String line=null;//存儲每次讀取到的行內容

7 while((line=bReader.readLine())!=null) {//如果文件內容讀完了則返回null

8 bWriter.write(line);//寫入讀取到的每行內容

9 bWriter.newLine();//每讀完一行則換行

10 }

11 bReader.close();//關閉讀取流對象

12 bWriter.close();//關閉寫入流對象

13 }

八,跟蹤行號的緩沖字符輸入流LineNumberReader

此類定義了方法

1   private static void function_demo11() throws IOException {

2 FileReader fr = new FileReader("demo.txt");// 讀取流對象

3 LineNumberReader lnr = new LineNumberReader(fr);// 行號讀取流對象,需要傳入讀取流fr對象

4 String line = null;// 存儲讀取到的內容

5 lnr.setLineNumber(100);// 設置起始行號,若不設置默認從0開始,在讀取到的每一行的末尾處自增1

6 while ((line = lnr.readLine()) != null) {// 按行讀取

7 System.out.println(lnr.getLineNumber() + " " + line);

8 }

9 lnr.close();

10 }

總結

以上是生活随笔為你收集整理的java io流顶层_Java中的IO流(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。