Java 读/写文件文本文件的示例

  1. /*
  2.  * 简单的读/写文本文件的示例
  3.  * 这里包含了三个例子,即
  4.  * 1. 将文件读入到内存(这里是StringBuffer)的例子
  5.  * 2. 将内容中的文本写到文件
  6.  * 3. 将一个文件的内容读出来写入另一个文件中
  7.  *    同时也展示了如果从输入流中读出来内容写入输出流中(仅限文本流)
  8.  * 三个例子可以独立存在,所以根据需要只看其中一个就行了。
  9.  */
  10. import java.io.BufferedReader;
  11. import java.io.FileInputStream;
  12. import java.io.FileOutputStream;
  13. import java.io.IOException;
  14. import java.io.InputStream;
  15. import java.io.InputStreamReader;
  16. import java.io.OutputStream;
  17. import java.io.OutputStreamWriter;
  18. import java.io.PrintStream;
  19. import java.io.PrintWriter;
  20. public final class AccessTextFile {
  21.     /**
  22.      * 1. 演示将流中的文本读入一个 StringBuffer 中
  23.      * @throws IOException
  24.      */
  25.     public void readToBuffer(StringBuffer buffer, InputStream is)
  26.         throws IOException {
  27.         String line;        // 用来保存每行读取的内容
  28.         BufferedReader reader = new BufferedReader(new InputStreamReader(is));
  29.         line = reader.readLine();       // 读取第一行
  30.         while (line != null) {          // 如果 line 为空说明读完了
  31.             buffer.append(line);        // 将读到的内容添加到 buffer 中
  32.             buffer.append("/n");        // 添加换行符
  33.             line = reader.readLine();   // 读取下一行
  34.         }
  35.     }
  36.     /**
  37.      * 2. 演示将 StringBuffer 中的内容读出到流中
  38.      */
  39.     public void writeFromBuffer(StringBuffer buffer, OutputStream os) {
  40.         // 用 PrintStream 可以方便的把内容输出到输出流中
  41.         // 其对象的用法和 System.out 一样
  42.         // (System.out 本身就是 PrintStream 对象)
  43.         PrintStream ps = new PrintStream(os);   
  44.         ps.print(buffer.toString());
  45.     }
  46.     /**
  47.      * 3*. 从输入流中拷贝内容到输入流中
  48.      * @throws IOException
  49.      */
  50.     public void copyStream(InputStream is, OutputStream os) throws IOException {
  51.         // 这个读过过程可以参阅 readToBuffer 中的注释
  52.         String line;
  53.         BufferedReader reader = new BufferedReader(new InputStreamReader(is));
  54.         PrintWriter writer = new PrintWriter(new OutputStreamWriter(os));
  55.         line = reader.readLine();
  56.         while (line != null) {
  57.             writer.println(line);
  58.             line = reader.readLine();
  59.         }
  60.         writer.flush();     // 最后确定要把输出流中的东西都写出去了
  61.                             // 这里不关闭 writer 是因为 os 是从外面传进来的
  62.                             // 既然不是从这里打开的,也就不从这里关闭
  63.                             // 如果关闭的 writer,封装在里面的 os 也就被关了
  64.     }
  65.     /**
  66.      * 3. 调用 copyStream(InputStream, OutputStream) 方法拷贝文本文件
  67.      */
  68.     public void copyTextFile(String inFilename, String outFilename)
  69.         throws IOException {
  70.         // 先根据输入/输出文件生成相应的输入/输出流
  71.         InputStream is = new FileInputStream(inFilename);
  72.         OutputStream os = new FileOutputStream(outFilename);
  73.         copyStream(is, os);     // 用 copyStream 拷贝内容
  74.         is.close(); // is 是在这里打开的,所以需要关闭
  75.         os.close(); // os 是在这里打开的,所以需要关闭
  76.     }
  77.     public static void main(String[] args) throws IOException {
  78.         int sw = 1;     // 三种测试的选择开关
  79.         AccessTextFile test = new AccessTextFile();
  80.         
  81.         switch (sw) {
  82.         case 1// 测试读
  83.         {
  84.             InputStream is = new FileInputStream("E://test.txt");
  85.             StringBuffer buffer = new StringBuffer();
  86.             test.readToBuffer(buffer, is);
  87.             System.out.println(buffer);     // 将读到 buffer 中的内容写出来
  88.             is.close();
  89.             break;
  90.         }
  91.         case 2// 测试写
  92.         {
  93.             StringBuffer buffer = new StringBuffer("Only a test/n");
  94.             test.writeFromBuffer(buffer, System.out);
  95.             break;
  96.         }
  97.         case 3// 测试拷贝
  98.         {
  99.             test.copyTextFile("E://test.txt""E://r.txt");
  100.         }
  101.             break;
  102.         }
  103.     }
  104. }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值