激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java中BufferedReader與BufferedWriter類的使用示例

Java中BufferedReader與BufferedWriter類的使用示例

2020-05-23 12:17skywangkw JAVA教程

BufferedReader與BufferedWriter分別繼承于Reader和Writer類,分別為字符的讀取和寫入添加緩沖功能,這里我們就來看一下Java中BufferedReader與BufferedWriter類的使用示例:

BufferedReader
BufferedReader 是緩沖字符輸入流。它繼承于Reader。
BufferedReader 的作用是為其他字符輸入流添加一些緩沖功能。
創建BufferReader時,我們會通過它的構造函數指定某個Reader為參數。BufferReader會將該Reader中的數據分批讀取,每次讀取一部分到緩沖中;操作完緩沖中的這部分數據之后,再從Reader中讀取下一部分的數據。
為什么需要緩沖呢?原因很簡單,效率問題!緩沖中的數據實際上是保存在內存中,而原始數據可能是保存在硬盤或NandFlash中;而我們知道,從內存中讀取數據的速度比從硬盤讀取數據的速度至少快10倍以上。
那干嘛不干脆一次性將全部數據都讀取到緩沖中呢?第一,讀取全部的數據所需要的時間可能會很長。第二,內存價格很貴,容量不想硬盤那么大。

示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.lang.SecurityException;
 
public class BufferedReaderTest {
 
  private static final int LEN = 5;
 
  public static void main(String[] args) {
    testBufferedReader() ;
  }
 
  /**
   * BufferedReader的API測試函數
   */
  private static void testBufferedReader() {
 
    // 創建BufferedReader字符流,內容是ArrayLetters數組
    try {
      File file = new File("bufferedreader.txt");
      BufferedReader in =
         new BufferedReader(
           new FileReader(file));
 
      // 從字符流中讀取5個字符。“abcde”
      for (int i=0; i<LEN; i++) {
        // 若能繼續讀取下一個字符,則讀取下一個字符
        if (in.ready()) {
          // 讀取“字符流的下一個字符”
          int tmp = in.read();
          System.out.printf("%d : %c\n", i, tmp);
        }
      }
 
      // 若“該字符流”不支持標記功能,則直接退出
      if (!in.markSupported()) {
        System.out.println("make not supported!");
        return ;
      }
 
      // 標記“當前索引位置”,即標記第6個位置的元素--“f”
      // 1024對應marklimit
      in.mark(1024);
 
      // 跳過22個字符。
      in.skip(22);
 
      // 讀取5個字符
      char[] buf = new char[LEN];
      in.read(buf, 0, LEN);
      System.out.printf("buf=%s\n", String.valueOf(buf));
      // 讀取該行剩余的數據
      System.out.printf("readLine=%s\n", in.readLine());
 
      // 重置“輸入流的索引”為mark()所標記的位置,即重置到“f”處。
      in.reset();
      // 從“重置后的字符流”中讀取5個字符到buf中。即讀取“fghij”
      in.read(buf, 0, LEN);
      System.out.printf("buf=%s\n", String.valueOf(buf));
 
      in.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (SecurityException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

程序中讀取的bufferedreader.txt的內容如下:

?
1
2
3
abcdefghijklmnopqrstuvwxyz
0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ

運行結果:

?
1
2
3
4
5
6
7
8
0 : a
1 : b
2 : c
3 : d
4 : e
buf=01234
readLine=56789
buf=fghij

BufferedWriter
BufferedWriter 是緩沖字符輸出流。它繼承于Writer。
BufferedWriter 的作用是為其他字符輸出流添加一些緩沖功能。
BufferedWriter通過字符數組來緩沖數據,當緩沖區滿或者用戶調用flush()函數時,它就會將緩沖區的數據寫入到輸出流中。
示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import java.io.BufferedWriter;
import java.io.File;
import java.io.OutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.lang.SecurityException;
import java.util.Scanner;
 
public class BufferedWriterTest {
 
  private static final int LEN = 5;
  // 對應英文字母“abcdefghijklmnopqrstuvwxyz”
  //private static final char[] ArrayLetters = "abcdefghijklmnopqrstuvwxyz";
  private static final char[] ArrayLetters = new char[] {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
 
  public static void main(String[] args) {
    testBufferedWriter() ;
  }
 
  /**
   * BufferedWriter的API測試函數
   */
  private static void testBufferedWriter() {
 
    // 創建“文件輸出流”對應的BufferedWriter
    // 它對應緩沖區的大小是16,即緩沖區的數據>=16時,會自動將緩沖區的內容寫入到輸出流。
    try {
      File file = new File("bufferwriter.txt");
      BufferedWriter out =
         new BufferedWriter(
           new FileWriter(file));
 
      // 將ArrayLetters數組的前10個字符寫入到輸出流中
      out.write(ArrayLetters, 0, 10);
      // 將“換行符\n”寫入到輸出流中
      out.write('\n');
 
      out.flush();
      //readUserInput() ;
 
      out.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (SecurityException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
 
  /**
   * 讀取用戶輸入
   */
  private static void readUserInput() {
    System.out.println("please input a text:");
    Scanner reader=new Scanner(System.in);
    // 等待一個輸入
    String str = reader.next();
    System.out.printf("the input is : %s\n", str);
  }
}

運行結果: 生成文件“bufferwriter.txt”,文件的內容是“abcdefghij”。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美激情天堂 | 黄污在线看 | 欧美亚洲另类在线 | 久久精品一区二区三区四区五区 | 欧美一级全黄 | 免费亚洲视频在线观看 | 亚洲精品久久久久久久久久 | 成人一级免费视频 | 国产午夜免费福利 | 噜噜色av | 一级精品| 欧美日韩国产一区二区三区在线观看 | 在线成人免费观看视频 | 中文字幕欧美专区 | 免费观看欧美一级片 | 毛片视频播放 | 免费看搡女人无遮挡的视频 | 92看片淫黄大片欧美看国产片 | 日本在线观看一区二区 | 日韩中文一区 | 亚洲国产资源 | 黄污视频在线看 | 欧美性videofree精品 | 午夜精品久久久久久久久久久久久蜜桃 | 亚洲免费视频一区 | 91成人久久 | 欧美xxxwww| 久久久久久久免费看 | 欧美成人精品不卡视频在线观看 | 成人444kkkk在线观看 | 小视频成人 | 久久精品国产99国产精品澳门 | 亚洲九草 | 日本免费一区二区三区四区 | 亚洲福利在线免费观看 | 国产精品成人久久久久a级 欧美特黄一级高清免费的香蕉 | 成人福利视频在线 | 精品久久中文网址 | 免费黄色小网站 | 欧洲色阁中文字幕 | 国产精品久久久久久久午夜片 |