Dict.CN 在線詞典, 英語學習, 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統計

          留言簿(23)

          積分與排名

          優秀學習網站

          友情連接

          閱讀排行榜

          評論排行榜

          Java 讀/寫文件文本文件的示例

          1/*
           * 簡單的讀/寫文本文件的示例
           * 這里包含了三個例子,即
           * 1. 將文件讀入到內存(這里是StringBuffer)的例子
           * 2. 將內容中的文本寫到文件
           * 3. 將一個文件的內容讀出來寫入另一個文件中
           *    同時也展示了如果從輸入流中讀出來內容寫入輸出流中(僅限文本流)
           * 三個例子可以獨立存在,所以根據需要只看其中一個就行了。
           */

          import java.io.BufferedReader;
          import java.io.FileInputStream;
          import java.io.FileOutputStream;
          import java.io.IOException;
          import java.io.InputStream;
          import java.io.InputStreamReader;
          import java.io.OutputStream;
          import java.io.OutputStreamWriter;
          import java.io.PrintStream;
          import java.io.PrintWriter;

          public final class AccessTextFile {

              /**
               * 1. 演示將流中的文本讀入一個 StringBuffer 中
               * @throws IOException
               */
              public void readToBuffer(StringBuffer buffer, InputStream is)
                  throws IOException {
                  String line;        // 用來保存每行讀取的內容
                  BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                  line = reader.readLine();       // 讀取第一行
                  while (line != null) {          // 如果 line 為空說明讀完了
                      buffer.append(line);        // 將讀到的內容添加到 buffer 中
                      buffer.append("\n");        // 添加換行符
                      line = reader.readLine();   // 讀取下一行
                  }
              }

              /**
               * 2. 演示將 StringBuffer 中的內容讀出到流中
               */
              public void writeFromBuffer(StringBuffer buffer, OutputStream os) {
                  // 用 PrintStream 可以方便的把內容輸出到輸出流中
                  // 其對象的用法和 System.out 一樣
                  // (System.out 本身就是 PrintStream 對象)
                  PrintStream ps = new PrintStream(os);  
                  ps.print(buffer.toString());
              }

              /**
               * 3*. 從輸入流中拷貝內容到輸入流中
               * @throws IOException
               */
              public void copyStream(InputStream is, OutputStream os) throws IOException {
                  // 這個讀過過程可以參閱 readToBuffer 中的注釋
                  String line;
                  BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                  PrintWriter writer = new PrintWriter(new OutputStreamWriter(os));
                  line = reader.readLine();
                  while (line != null) {
                      writer.println(line);
                      line = reader.readLine();
                  }
                  writer.flush();     // 最后確定要把輸出流中的東西都寫出去了
                                      // 這里不關閉 writer 是因為 os 是從外面傳進來的
                                      // 既然不是從這里打開的,也就不從這里關閉
                                      // 如果關閉的 writer,封裝在里面的 os 也就被關了
              }

              /**
               * 3. 調用 copyStream(InputStream, OutputStream) 方法拷貝文本文件
               */
              public void copyTextFile(String inFilename, String outFilename)
                  throws IOException {
                  // 先根據輸入/輸出文件生成相應的輸入/輸出流
                  InputStream is = new FileInputStream(inFilename);
                  OutputStream os = new FileOutputStream(outFilename);
                  copyStream(is, os);     // 用 copyStream 拷貝內容
                  is.close(); // is 是在這里打開的,所以需要關閉
                  os.close(); // os 是在這里打開的,所以需要關閉
              }

              public static void main(String[] args) throws IOException {
                  int sw = 1;     // 三種測試的選擇開關
                  AccessTextFile test = new AccessTextFile();
                 
                  switch (sw) {
                  case 1: // 測試讀
                  {
                      InputStream is = new FileInputStream("E:\\test.txt");
                      StringBuffer buffer = new StringBuffer();
                      test.readToBuffer(buffer, is);
                      System.out.println(buffer);     // 將讀到 buffer 中的內容寫出來
                      is.close();
                      break;
                  }
                  case 2: // 測試寫
                  {
                      StringBuffer buffer = new StringBuffer("Only a test\n");
                      test.writeFromBuffer(buffer, System.out);
                      break;
                  }
                  case 3: // 測試拷貝
                  {
                      test.copyTextFile("E:\\test.txt", "E:\\r.txt");
                  }
                      break;
                  }
              }

          }

          posted on 2006-02-22 22:10 都市淘沙者 閱讀(1481) 評論(0)  編輯  收藏 所屬分類: Java Basic/Lucene/開源資料

          主站蜘蛛池模板: 进贤县| 双流县| 株洲市| 东阳市| 偏关县| 阿鲁科尔沁旗| 礼泉县| 沽源县| 宿州市| 琼结县| 昌吉市| 铜鼓县| 新余市| 会理县| 会东县| 瑞金市| 巴彦县| 杭锦旗| 铁力市| 景宁| 大关县| 梁河县| 通山县| 五寨县| 天气| 泰宁县| 锦州市| 绥宁县| 凌源市| 丽江市| 晋中市| 荣成市| 临洮县| 绥化市| 都江堰市| 志丹县| 应用必备| 普陀区| 句容市| 阿拉善盟| 舒城县|