JAVA学习第五十一课 — IO流(五)流的操作基本规律

转换流:

InputStreamReader:字节到字符的桥梁。解码

OutputStreamWriter:字符到字节的桥梁。编码

流的基本规律

1.明确源和汇

源:InputStream、Reader

汇:OutputStream、Writer

2.明确数据是否是纯文本数据

源:如果是,Reader,否,InputStream

汇:如果是,Writer,否,OutputStream

前两点明确后院,体系也就明确了

3.明确具体的设备

源设备:

硬盘:File

键盘:System.in

内存: 数组

网络:Socket流

汇设备:

硬盘:File

控制台:System.out

内存:数组

网络:Socket流

4.是否需要其他额外功能(对上述增强)

1.是否需要高效(缓冲区),

是,就加上buffer

2.是否需要转换

字节->字符:InputStreamReader:

InputStreamReader isr = new InputStreamReader(System.in);

FileWriter fe = new FileWriter("ACM.txt");

字符->字节:OutputStreamWriter:

OutputStreamWriter osw = new OutputStreamWriter(System.out)

练习:

1.复制一个文本文件:

(1)明确源和汇:源:InputStream Reader 汇:OutputStream Writer

 (2)是否是纯文本:是,源:Reader 汇:Writer

 (3)明确设备:源:File 汇:File  

FileReader fr = new FileReader(); FileWriter fw = new FileWriter();

 (4)需要高效:BufferedReader br = new BufferedReader(new FileReader("acm.txt"));

     BufferedWriter bw = new BufferedWriter(new FileWriter("ACM.txt"));

2.读取键盘信息,并写入一个文件中

 (1)明确源和汇:源:InputStream、 Reader 汇:OutputStream 、Writer

 (2)是否是纯文本:是,源:Reader 汇:Writer

 (3)明确设备:源:键盘 (System.in) 汇:硬盘 (File) 

InputStream is = System.in(); FileWriter fw = new FileWriter("ACM.txt");

(4)需要功能:1.转换,因为已明确源是Reader,这样更便捷

InputStreamReader isr = new InputStreamReader(System.in);

FileWriter fe = new FileWriter("ACM.txt");

   2.高效:BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

BufferedWriter bw = new BufferedWriter(new FileWriter("ACM.txt"))

3.将文本文件的数据显示到控制台上

(1)明确源和汇:源:InputStream、 Reader 汇:OutputStream 、Writer

(2)是否是纯文本:是,源:Reader 汇:Writer

(3)明确设备:源:硬盘(File) 汇:控制台(System.out)

FileReader fr = new FileReader("acm.txt");

OutStream out = System.ou;

(4)需要功能:

转换:FileReader fr  = new FileReader("acm.txt");

OutputStreamWriter osw = new OutputStreamWriter(System.out);

高效:BufferedReader br = new BufferedReader(new FileReader("acm.txt"))

      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

4.读取键盘数据,显示到控制台

(1)明确源和汇:源:InputStream、 Reader 汇:OutputStream 、Writer

(2)是否是纯文本:是,源:Reader 汇:Writer

(3)明确设备:源:键盘 (System.in) 汇:控制台(System.out)

InputSream in = System.in

OutputStream out = System.out;

(4)需要转换,都是字节流,操作文本数据,使用字符流操作,更方便,一次读取一行

InputStreamReader isr = new InputStreamReader(System.in);

OutputStreamWriter osw = new OutputStreamWriter(System.out);

高效:

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

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.ou))

未完

时间: 2024-12-27 23:55:00

JAVA学习第五十一课 — IO流(五)流的操作基本规律的相关文章

JAVA学习第四十七课 — IO流(一):文件的读写

输入流和输出流相对于内存 将外部设备的数据读取到内存中:输入 将内存中的数据写入外部设备中:输出 IO流常用基类 字节流的抽象基类:InputStream,OutputStream 字符的抽象基类:Reader,Writer PS:由这四个流派生出的子类都是以父类名作为后缀名 如:InputStream的派生类FileInputStream,Reader的派生类FileReader PS:如果是文字形式的数据应该优先考虑字符流,且将数据从内存写到硬盘上应该是Writer FileWriter类

Java学习之路(十一):IO流<前戏>

File类的概述和构造方法 构造方法: File(String pathname):根据一个路径得到File对象 File(String parent,String child):根据一个目录和一个子文件/目录 得到File对象 File(File parent,String child):根据一个父File对象和一个子文件/目录得到File对象 File更应该叫做一个路径,文件 路径  或者  文件夹  路径 File是指文件或者目录路径名的抽象表示形式 创建功能: public boolea

JAVA学习第六十一课 — TCP协议

TCP传输 Socket和ServerSocket 建立客户端和服务器端(两个独立的应用程序) 建立连接后,通过Socket中的IO流进行数据的传输 关闭Socket TCP和UDP原理差不多,只是涉及的对象不一样 TCP客户端 Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号. public static void TCPDemo() throws UnknownHostException, IOException { /* * T

JAVA学习第三十一课(常用对象API)- StringBuffer类&&StringBuilder类

StringBuffer类 字符串的组成原理就是通过该类实现的 StringBuffer可以对字符串内容进行增删 StringBuffer是一个容器 很多方法和String相同 一.特点 StringBuffer字符串缓冲区,用于存放数据的容器 1.可变长度的 2.可以存储不同的数据类型 3.最终要转成字符串进行使用 4.对字符串进行修改 容器的特点: 1.添加  append(data) insert(index,data); 2.删除 StringBuffer delete(int star

java基础(二十一)IO流(四)

这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是比较清晰的!如果你有需要可以在评论中留下您的邮箱我看到一定会免费发给你的!感谢这个平台让我们大家共同进步吧!! 记住 程序员是无私的!!! 也非常欢迎到我的博客内观看 博客地址:http://www.cnblogs.com/duscl/ /* 1:登录注册IO版本案例(掌握) 要求,对着写一遍. c

【Java学习笔记之三十一】详解Java8 lambda表达式

Java 8 发布日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码.而定义行为最重要的那行代码,却混在中间不够突出.Lambda表达式取代了匿名类,取消了模板,允许用函数式风格编写代码.这样有时可读性更好,表达更清晰.在Java生态系统中,函数式表达与对面向对象的全面支持是个激动人心的进步.将进一步促进并行

疯狂Java学习笔记(55)----------字节流与字符流

字节流与字符流 在java.io包中操作文件内容的主要有两大类:字节流.字符流,两类都分为输入和输出操作.在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成.(这四个都是抽象类) 处理流的用法: 按照流是否直接与特定的地方(如磁盘.内存.设备等)相连,分为节点流和处理流两类.  节点流:可以从或向一个特定的地方(节点)读写数据.如FileReader 处理流:是对一个已存在的流的

JAVA学习第五十七课 — IO流(十一)

一.管道流 PipedInputStream 和 PipedOutPutStream 输入和输出能够直接进行连接.结合线程使用 管道流,顾名思义,写一个读一个.连成一个管子 API文档:管道输入流应该连接到管道输出流:管道输入流提供要写入管道输出流的全部数据字节.通常,数据由某个线程从 PipedInputStream 对象读取,并由其它线程将其写入到对应的 PipedOutputStream. 不建议对这两个对象尝试使用单个线程.由于这样可能死锁线程. 管道输入流包括一个缓冲区.可在缓冲区限定

JAVA学习第五十课 — IO流(四)转换流

一.键盘录入 System.out:标准输出设备,控制台 System.in:标准输入设备,键盘 输入演示 输入字符串遇到回车,打印,输入over,输入结束 PS:键盘的录入只读取一个字节,先将字节拼一个字符串,所以需要一个容器,再参与over的判断 import java.io.*; public class Main { public static void main(String[] args) throws IOException { InputStream in = System.in