如何选择流对象?

1.明确源和目的

源:输入流

InputStream

Reader

----------------

目的:输出流

OutputStream

Writer

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

是:字符流

不是:字节流

3.当体系明确后,在明确要使用哪个具体的对象。

通过源设备来进行区分:

1.内存

2.硬盘

3.键盘

目的设备:

1.内存

2.硬盘

3.控制台

--------------------------------------------------

1.复制文件

源:因为是源,所以使用读取流。InputStream  Reader

是不是操作文本文件

是,这时就可以选择Reader,这样体系就明确了。、

接下来明确要使用该体系中的哪个对象,

明确设备:硬盘,上一个文件。

Reader体系中,可以操作文件的对象是FileReader

FileReader fr = new FileReader(“a.txt”);

是否需要提高效率?是,就加入Reader体系中的缓冲区

BufferedReader bufr = new BufferedReader(fr);

目的:OutputStream  Writer

是否是纯文本

是。Writer

设备:硬盘,一个文件。

Writer体系中可以操作文件的是FileWriter。

FileWriter fw = new FileWriter(“b.txt”);

是否需要提高效率?是,就加入Writer体系中的缓冲区

BufferedWriter bufw = new BufferedWriter(fw);

--------------------------------

需求:将键盘录入的数据保存到一个文件

源:InputStream Reader

1.是不是纯文本? 是,Reader

2.设备? 键盘。对应对象是System.in

不是选择Reader吗?System.in对应的不是字节流吗?

为了操作键盘的文本数据方便,转成字符流,按照字符串操作时最方便的。所以既然明确了Reader,那么就将System.in转换成Reader

用了Reader体系的转换流。InputStreamReader

InputStreamReader isr = new InputStreamReader(System.in);

需要提高效率吗?

BufferedReader bufr = new BufferedReader(isr);

目的:OutputStream Writer

是否是存文本?是,Writer

设备?硬盘,一个文件->FileWriter

FileWriter fw = new FileWriter(“a.txt”);

需要提高效率吗?需要

BufferedWriter bufw = new BufferedWriter(fw);

--------------------------------------------------------------------

扩展一下,想要把录入的数据按照指定的编码来存储。

目的:

是否存文本?是,Writer

设备:硬盘,一个文件FileWriter。但是FileWriter使用的是默认编码表。存储时,要指定编码,OutputStreamWriter可以指定编码

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(“d.txt”,”UTF-8”));

需要高效吗?

BufferedWriter bufw = new BufferedWriter(osw);

所以,记住,转换流什么时候使用,字符和字节之间的桥梁。通常,涉及到字符编码转换时,需要用到转换流。

如何选择流对象?

时间: 2024-09-17 01:26:40

如何选择流对象?的相关文章

C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器,它能够长期保留信息,能读能写,可以刷新重写,方便携带,因而得到广泛使用. 文件(file)是程序设计中一个重要的概念.所谓“文件”,一般指存储在外部介质上数据的集合.一批数据是以文件的形式存放在外部介质(如磁盘.光盘和U盘)上的.操 作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部

黑马程序员——java高新技术——IO其他流对象

点击打开链接 点击打开链接 点击打开链接 android培训.<a">点击打开链接 点击打开链接 java培训.期待与您交流!">点击打开链接 点击打开链接 IO其他对象 PrintStream:字节打印流.为其他输出流添加了功能,提供了打印方法,可以将各种数据类型的数据原样打印. 构造函数可以接受的参数类型:file对象,字符串路径,字节输出流. 方法:println():打印各种基本数据类型. PrintWrite:字符打印流.构造函数可以接受的参数类型:file

黑马程序员——Java基础--IO流(一)---File类以及其他流对象

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.File类 File类是将文件系统中的文件和文件夹封装成了对象.提供了更多的属性和行为可以对这些文件和文件夹进行操作.这些是流对象办不到的,因为流只操作数据.File对象可以作为参数传递给流对象的构造函数.File 类的实例是不可变的:也就是说,一旦创建,File 对象表示的抽象路径名将永不改变. 1.File类中的方法 (1).File类的构造方法以及字段 1 new File(Stri

第八篇:使用字符串流对象进行格式转换

前言 字符串流对象有个很实用的功能就是格式转换.比如可以将整数类型的123转换成字符串格式的123,或者反过来.那么具体又是如何实现的?且看下文. 实现思路 对于整数转换成字符串格式,可设s是一个空的字符串流对象,” 整型变量 “存放目标整数.则当执行" s << 整型变量 "后,该整数将转成字符串格式并存进流中.随后代码中使用" s.str() "即可获取到该整数的字符串格式.对于字符串转换成整数格式,亦可设s是一个空的字符串流对象,” 整型变量 “存

黑马程序员—IO包中的其他流对象

--Java培训.Android培训.iOS培训..Net培训.期待与您交流! --- IO流中有四大体系: 字符流:Reader和 Writer 字节流:InputStream和OutputSream 基于这四大体系,io流中衍生出许多对象,常见的有FileReader,FileWriter,FileInputStream,FileOutputStream,BufferedInputStream等等. 除此之外,还有其他一些常见的对象,这些对象比较特殊,往往是针对某些特定功能的.我们在应用中凡

C++文件流类与文件流对象具体介绍

文件流是以外存文件为输入输出对象的数据流.输出文件流是从内存流向外存文件的数据,输入文件流是从外存文件流向内存的数据.每一个文件流都有一个内存缓冲区与之对应. 请区分文件流与文件的概念,不用误以为文件流是由若干个文件组成的流.文件流本身不是文件,而只是以文件为输入输出对象的流.若要对磁盘文件输入输出,就必须通过文件流来实现. 在C++的I/O类库中定义了几种文件类,专门用于对磁盘文件的输入输出操作.在 图13.2(详情请查看:与C++输入输出有关的类和对象)中可以看到除了标准输入输出流类istr

Java之IO流基础流对象

输入流和输出流是相对于内存设备而言 即将外设中的数据读取到内存中就是输入 将内存中的数据写入到外设中就是输出 字符流的由来: 其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字. 再对这个文字进行操作,其实就是字节流+编码表 字节流的两个顶层父类: 1,InputStream  2,OutputStream 字符流的两个顶层父类: 1,Reader   2,Writer 这些体系的子类都以父类名作为后缀. 而子类名的前缀就是该对象的功能. 如果要操作文字数据,建议

JAVA之IO技术-字符流对象Writer的子类对象FileWriter的使用

  package ioTest.io1; import java.io.File; import java.io.FileWriter; /* * IO技术,按照操作数据的方式分类如下: * 字节流和字符流 * 字节流的两个基类: * InputStream,OutputStream * 字节流的两个基类: * Reader,Writer * 思考一个问题:为什么有了字节流还要出现字符流? * * 先学习字符流的特点. * * 既然IO是操作数据的,那么数据最常见的体现形式 文件 * 需求:

wkhtmltopdf 项目问题 将小图片转换成流对象页面输出

项目工作中问题,linux环境下,使用wkhtmltopdf 做html转换成pdf下载,页面存在图片,转换出来的pdf 生成的html可以正常使用,图片显示正常,直接将生成的html路径转换成pdf 图片位置,总是显示空白; 图片空白问题,自己也查阅了网上好多信息,并没有得到如意的结果,只能退而求其次自己想办法了; 自己使用的解决方法,方便大家工作使用,将生成静态页面模板中的图片,手动的调用方法转换成流对象;在页面通过 <img src="data:image/jpg;base64,XX