第19天-18-IO流(流操作规律 - 1)

通过三个步骤来明确"流操作"的规律:

  1. 明确数据流的"源和目的"

    1. 源, 输入流: InputStream/Reader

    2. 目的, 输出流: OutputStream/Writer

  2. 明确操作的数据是否是纯文本

    1. 是, 字符流

    2. 不是, 字节流

  3. 通过设备来区分要使用哪个具体的类

    1. 源设备: 内存/硬盘/键盘

    2. 目的设备: 内存/硬盘/控制台

  4. 附录

    1. 是否需要进行缓冲:

      BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

    2. 是否需要进行 "字符 - 字节" 以及charset的转换:

      例如OutputStreamWriter(OutputStream out, String charsetName)

第19天-19-IO流(流操作规律 - 2)

package bxd;

import java.io.*;

public class TransStreamDemo2 {

    public static void main(String[] args) throws IOException {
method_5(); } // 将一个文本文件中的数据存储到另外一个文件中
public static void method_1() throws IOException {
BufferedReader bufr = new BufferedReader(new FileReader("s.txt"));
BufferedWriter bufw = new BufferedWriter(new FileWriter("d.txt")); String line;
while ((line = bufr.readLine()) != null) {
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
} // 将键盘录入的数据保存到一个文件中
public static void method_2() throws IOException {
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new FileWriter("d.txt")); String line;
while ((line = bufr.readLine()) != null) {
if ("over".equals(line)) break;
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
} // 将键盘录入的数据保存到一个文件中, 并可以自定义目标文件的字符编码.
public static void method_3() throws IOException {
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d.txt"), "utf-8")); String line;
while ((line = bufr.readLine()) != null) {
if ("exit".equals(line)) break;
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
} // 练习1: 将一个图片文件中的数据存储到另外一个文件中
public static void method_4() throws IOException {
BufferedInputStream bufis = new BufferedInputStream(new FileInputStream("1.png"));
BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("2.png")); int by;
while ((by = bufis.read()) != -1) {
bufos.write(by);
}
bufis.close();
bufos.close();
} // 练习2: 将一个文本文件的数据输出到控制台
public static void method_5() throws IOException {
BufferedReader bufr = new BufferedReader(new FileReader("s.txt"));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out)); String line;
while ((line = bufr.readLine()) != null) {
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}

最新文章

  1. 在Activity中响应ListView内部按钮的点击事件
  2. Mysql乱码
  3. 【】五句话搞定JavaScript作用域
  4. 省市区(县)三级联动代码(js 数据源)
  5. android学习日记23--Android XML解析
  6. 17.2.1 Replication Implementation Details 复制实现细节:
  7. 给AVS添加描述(how to add a description to a video)
  8. openvswitch常用操作
  9. LintCode-编辑距离
  10. CSS的背景属性和边框属性
  11. oracle分析函数技术详解(配上开窗函数over())
  12. 关于Android自定义view 你所需要知道的基本函数
  13. mysql清空表
  14. 【原创】大数据基础之Spark(8)Spark中Join实现原理
  15. hash_hmac 签名
  16. 【zheng阅读系列】shiro权限管理
  17. 浅谈FFT、NTT和MTT
  18. Spring Boot 数据访问集成 MyBatis 与事物配置
  19. B1014. 福尔摩斯的约会
  20. 安装lr时无法将值Disable Script Debugger 写入注册表

热门文章

  1. dede发布内容限制违规词
  2. Zynq-7000 FreeRTOS(二)中断:PL中断请求
  3. python怎么解决用matplotlib画图时无法显示中文的问题或者出现方框的问题
  4. 【ORACLE】ORACLE session(会话)管理
  5. Cloudera Manager安装之Cloudera Manager 5.3.X安装(三)(tar方式、rpm方式和yum方式)
  6. TortoiseGit学习系列之Windows上本地代码如何通过TortoiserGit提交到GitHub详解(图文)
  7. rspec 笔记
  8. Java PrepareStatement
  9. WPF 自定义NotifyPropertyChanged
  10. 深度为君剖析CTO、技术总监、首席架构师的区别