第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();
}
}

毕向东_Java基础视频教程第19天_IO流(18~19)的更多相关文章

  1. 毕向东_Java基础视频教程第20天_IO流(7~10)

    第20天-07-IO流(递归) package bxd; import java.io.File; public class FileDemo3 { // 非递归打印 public static vo ...

  2. 毕向东_Java基础视频教程第21天_IO流(1)

    第21天-01-IO流(对象的序列化) ObjectInputStream与ObjectOutputStream 被操作的对象需要实现Serializable接口(标记接口) 非必须, 但强烈建议所有 ...

  3. 毕向东_Java基础视频教程第20天_IO流(15~17)

    第20天-15-IO流(打印输出流) 打印输出流:PrintWriter与PrintStream 两者的区别:Since JDK 1.4 it's possible to specify the ch ...

  4. 毕向东_Java基础视频教程第20天_IO流(11~14)

    第20天-11-IO流(Properties简述) .properties是一种主要在Java相关技术中用来存储应用程序的可配置参数的文件的文件扩展名.它们也可以存储用于国际化和本地化的字符串,这种文 ...

  5. 毕向东_Java基础视频教程第20天_IO流(5~6)

    第20天-05-IO流(文件列表一) static File[] listRoots() List the available filesystem roots. String[] list() Re ...

  6. 毕向东_Java基础视频教程第20天_IO流(1~4)

    第20天-01-IO流(File概述) File类: 用来将文件或者文件夹封装成对象, 方便进行操作. File对象可以作为参数, 传递给流对象的构造函数. 流对象不能操作文件夹; 流对象不能操作文件 ...

  7. 毕向东_Java基础视频教程第19天_IO流(01~05)

    第19天-01-IO流(BufferedWriter) 字符流的缓冲区 缓冲区的出现提高了对数据的读写效率. 对应类缓冲区要结合流才可以使用. BufferedWriter BufferedReade ...

  8. 毕向东_Java基础视频教程第19天_IO流(06~10)

    第19天-06-IO流(装饰设计模式) 装饰设计模式: 当想要对已有的对象进行功能增强时, 可以定义类,将已有对象传入,基于已有的功能,并提供加强功能.那么这个自定义的类称为装饰类. 装饰类通常会通过 ...

  9. 毕向东_Java基础视频教程第19天_IO流(11~14)

    第19天-11-IO流(字节流File读写操作) import java.io.FileInputStream; import java.io.FileOutputStream; import jav ...

  10. 毕向东_Java基础视频教程第19天_IO流(20~22)

    第19天-20-IO流(改变标准输入输出设备) static void setIn(InputStream in) Reassigns the "standard" input s ...

随机推荐

  1. 一张图说清楚SQL的Join

    话不多说..看图

  2. 一次简单的ORM调研

        对于ORM,公司一直在用轻量级的PetaPoco,PetaPoco是挺轻巧,易用性和性能都非常优秀.但也有很多的缺点,在组装复杂sql语句的时候有bug,记忆中使用orderby.sum的时候 ...

  3. python的socket.recv函数陷阱

    目录 前言 一个粘包实验 执行结果 排错思路 解决和总结 前言 惯例练习历史实验,在编写tcp数据流粘包实验的时候,发现一个奇怪的现象.当远程执行的命令返回结果很短的时候可以正常执行,但返回结果很长时 ...

  4. 如何对react进行性能优化

    React本身就非常关注性能,其提供的虚拟DOM搭配上DIff算法,实现对DOM操作最小粒度的改变也是非常高效的,然而其组件的渲染机制,也决定了在对组件更新时还可以进行更细致的优化.  react组件 ...

  5. js小技巧--摘录1

    原文地址https://github.com/loverajoel/jstips 1.数组中插入元素 a.尾部追加 var arr = [1,2,3,4,5]; var arr2 = []; arr. ...

  6. python-fifo管道文件通信

    #!/usr/bin/python #coding=utf-8 import os,sys,multiprocessing,time try: os.mkfifo('file') except :pa ...

  7. MYSQL数据库的参数文件

    参数文件:告诉MySQL实例启动时在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还会介绍各种参数的类型. 参数文件 当MySQL实例启动时,MySQL会先去 ...

  8. JavaScript对象——原型与原型链

    原型与原型链 一. 普通对象与函数对象 JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object .Function 是 JS 自带的函数对象.下面举例说明 va ...

  9. VS中自定义C#快速简写代码

     首先在VS中找到工具——代码片段管理器——语言选择(CSharp)——Visual C#——赋值路径——根据路径找到对应的代码片段用VS打开 修改: Title——标题 ShortCut——缩写 D ...

  10. SpringBoot 之Quartz的使用

    对于Quartz的使用,还是想说一句,SpringBoot真的很好用啊! 第一步:当然是引入依赖啦 <parent> <groupId>org.springframework. ...