IO流 流操作规律 转换流的由来

package com.yyq;
import java.io.*;
/*
 * 转换流--------指定码表
 * 需求: 想将一个文件的数据打印在控制台上
 * 源:文件
 * 目的:控制台
 * 流操作的基本规律:
 *     最痛苦的就是流的对象有很多,不知道该用哪一个
 *
 *     三个明确来完成: (1)明确 源和目的
 *                         源: 输入流  (InputStream Reader)
 *                       目的:输出流(OutputStream Writer)
 *                 (2)明确操作的数据是否是纯文本
 *                          是纯文本: 字符流
 *                      不是纯文本:字节流
 *                 (3)当体系明确后,再明确要使用那个具体的对象
                        设备进行区分:
 *                         源设备:内存,硬盘,键盘
 *                         内存,硬件,控制台
 *                 是否需要提高效率: 是,需要加入Reader体系中的缓冲区
 *   1.将一个文本文件中的数据存储到 另一个文件中,复制文件
 *       源:InputStream Reader
 *        是文本文件,这是就可以选择Reader
 *        体系明确
 *        接下来要明确要使用该体系中的那个对象,明确设备: 硬盘上的一个文件
 *        Reader体系中可以操作文件的对象是FileReader
 *     目的:OutputStream Writer
 *           目的是否是纯文本 writer
 *      设备: 硬盘,一个文件
 *        writer 体系中可以操作文件的对象FileWriter
 *      (循环读写,定义缓冲区)
 */
/*
 * 2.将键盘录入的数据保存到一个文件中
 *   源: InputStrem Reader
 *   是不是纯文本:(键盘是纯文本 ? 是 Reader)
 *   设备:键盘(对应的对象是 System.in )
 *   不是选择Reader吗 ?System.in对应的是不是字节流吗?
 *   为了操作键盘的文本数据方便,转成字符流,按照字符串操作是最方便的
 *   所以既然明确了Reader ,那么就将system.in 转换成Reader
 *   用了Reader体系中的转换流 InputStreamReader
 *       需要提高效率吗? 需要的话使用BufferedReader
 *   目的: OutputStream Writer
 *   是否是纯文本? 是字符流writer
 *   设备:硬盘一个文件: 使用FileWriter
 *   需要提高效率吗? BufferedWriter
 *   ********************************
 *
 *   扩展:想要把录入的数据按照指定的编码表(utf8),将数据存入到文件中
 *   转换流的由来就是可以指定编码表,(转换流存在的意义,就是能指定编码表)
 *   但是存储是,需要加入指定的编码表,而指定的编码表只有转换流可以指定
 *   该流对象需要接收一个字节输出流,而且还可以操作文件的字节输出流FileOutputStream
 *
 *   转换流: 什么时候使用? 字符和字节之间的桥梁,通常涉及字符编码转换时使用到
 */
public class Test {
    public static void main(String[] args) throws IOException {
        BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("1.txt"),"gbk"));
        System.out.println(bufr.readLine());
        BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
        String line = null;
        while((line = bufr.readLine())!=null){
            bufw.write(line);
            bufw.newLine();
            bufw.flush();
        }
    }
}
时间: 2024-10-14 01:26:01

IO流 流操作规律 转换流的由来的相关文章

Java转换流、缓冲流、流的操作规律和properties类整理

转换流 1.1                OutputStreamWriter类 OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节.它的作用的就是,将字符串按照指定的编码表转成字节,在使用字节流将这些字节写出去. package com.oracle.reader; public class Demo04 { public static void main(String[] args) throws IOException

流的操作规律

IO流中对象很多,解决问题(处理设备上的数据时)到底该用哪个对象呢? 把IO流进行了规律的总结(四个明确):   明确一:要操作的数据是数据源还是数据目的. 源:InputStream    Reader  目的:OutputStream Writer 先根据需求明确要读,还是要写.   明确二:要操作的数据是字节还是文本呢? 源: 字节:InputStream 文本:Reader 目的: 字节:OutputStream 文本:Writer  明确三:明确数据所在的具体设备. 源设备: 硬盘:文

00095_流的操作规律

1.IO流中对象很多,解决问题(处理设备上的数据时)到底该用哪个对象呢? 2.四个明确 (1)明确一:要操作的数据是数据源还是数据目的.        源:InputStream    Reader        目的:OutputStream Writer 先根据需求明确要读,还是要写. (2)明确二:要操作的数据是字节还是文本呢?        源:            字节:InputStream            文本:Reader        目的:            字节

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

黑马程序员-io读取键盘录入之转换流

--Java培训.Android培训.iOS培训..Net培训.期待与您交流! -- 自学视频io第二部分最后 这一讲重点部分,明白io流中这么多体系,怎么快速判断用哪种流... 1 1.1:明白源:InputStream Reader 1.2:明确目的:OutputStream Writer 2 是否是文本文件 是: 用Reader Writer 不是:用 InputStream OotputStream 3 是否要提高读写效率 是:BufferedReader br=new Buffered

IO流的操作规律

1.明确源和目的: 源:InputStream    Reader 目的:OutputStream       Writer 2.明确数据是否是纯文本数据 源: 是纯文本:Reader 不是纯文本:InputStream 目的:是纯文本:Writer 不是纯文本:OutputStream 先明确体系是哪个 3.明确具体的设备 源设备:硬盘(File).键盘(System.in).内存(数组).网络(Socket流). 目的设备:硬盘(File).控制台(System.out).内存(数组).网络

Java语言中IO流的操作规律学习笔记

1,明确源和目的. 数据源:就是需要读取,可以使用两个体系:InputStream.Reader: 数据汇:就是需要写入,可以使用两个体系:OutputStream.Writer: 总结: 读:就是把数据读入内存 写:就是把数据读出来 2,操作的数据是否是纯文本数据? 如果是:数据源:Reader 数据汇:Writer 如果不是:数据源:InputStream 数据汇:OutputStream 总结:纯文字的东西用字节流,其他用字节流 3,虽然确定了一个体系,但是该体系中有太多的对象,到底用哪个

IO流操作规律

IO流的操作规律 * 字符流: * FileReader * FileWriter * BufferedReader * InputStreamReader * OutputStreamWriter * 字节流: * FileInputStream * FileOutputStream * BufferedInputStream * BufferedOutputStream 用哪个流对象解决问题呢? 明确一:明确源和目的 源:读,输入体系,InputStream   Reader 目的:写,输出

字节流 操作规律

InputStream:是表示字节输入流的所有类的超类.  |--- FileInputStream:从文件系统中的某个文件中获得输入字节.哪些文件可用取决于主机环境.FileInputStream 用于读取诸如图像数据之类的原始字节流.要读取字符流,请考虑使用 FileReader. |--- FilterInputStream:包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能.  |--- BufferedInputStream:该类实现缓冲的输入流.