黑马程序员——java IO流

java中,IO流需要操作系统资源,使用完毕后要释放资源。

IO流根据操作的数据的类型的不同,可以分为字节流和字符流,

字符流是基于字节流的。

字符流的顶层基类是Reader和Writer

字节流的顶层基类是InputStream和OutputStream

流是用来操作数据的,数据的最常见形式是文件,字符流针对的是文本文件,字节流针对的是二进制文件(如图片文件)。

1.FileWriter是Writer的一个子类,创建FileWriter对象后,如果源文件不存在则创建新文件;如果源文件存在则覆盖

FileWriter有一个重载的构造函数,指定当往文件中写入数据时,是覆盖原数据还是追加数据,如果传入true则追加数据

其write()方法是把数据写入流中,只有执行了flush()方法后,才能把数据添加到文件。

close()方法,在关闭资源之前也会执行flush()方法。

2.FileReader是Reader的一个子类,其read()方法每次读取一个字符,当读到末尾时返回-1;第二种读取方式是给read()方法

传入一个字符数组,返回独到的字符个数,当读到末尾时返回-1

3.IO流中的缓冲区是为了提高流的操作效率的。当关闭缓冲区时,也就关闭了其所缓冲的流对象

(1)bufferedWriter

使用方式:只要将要提高效率的流对象作为参数传递给缓冲区的构造函数即可。

也要执行flush()或者close()方法,才能把数据谢大目的地

它有一个newLne()方法,是跨越操作系统的换行符。

(2)bufferedReader

使用方式与bufferedWriter类似

它有一个readLine()方法,一次读取一行数据,如果读到末尾,返回null

readLine()原理:无论是读一行,获取多个字符,最终都是在硬盘上一个一个读取,所以最终使用的还是read方法一次读一个的方法.readLine()方法是在读到

"\r\n"时认为读完一行(Windows系统下),然后将数据返回。

(3)装饰模式是在原有类的基础上增强其功能,

装饰模式中,我们可以把被装饰类的父类当作参数传进装饰类的构造方法内,那么你这一个装饰类就可以应用于这个体系的了,这也是java多态性的好处.

相比较之下使用装饰模式降低了类之间的关系。装饰类是因为增强了已有的对象,具有的功能和已有的是相同的,是不过提供了更强的功能,所以装饰类和

被装饰类通常属于一个体系中的。

4.字节流的两个顶层基类是:InputStream(读),OutputStream(写)

OutputStream的write()方法不需要flush()数据就已经写入到目的地了。

这是一个字符缓冲输出流,该类保持对行号的跟踪,可以通过该类的setLineNumber(int)和getLineNumber(int) 方法分别设置和获取行号

5.  将字符流转对象化为字节流对象,使用转换流:InputStreamReader(字节通向字符的桥梁)

OutputStreamWriter(字符通向字节的桥梁),也就是读进来的是字符,写进去的是字节,只有转换流能够指定编码表

6.总结IO操作的规律:通过两个明确来完成:
      (1)明确源和目的
          源: 输入流:InputStream,Reader
          目的:输出流:OutputStream,Writer
      (2)明确操作的额数据是否是纯文本
           是:字符流
           不是:字节流
      (3)当体系明确之后,再明确要使用那个具体对象
            通过设备来进行区分
            源设备:内存(数组流),硬盘(文件流),键盘(System.in)
           目的设备:内存(数组流),硬盘(文件流),控制台(System.out)

时间: 2024-08-02 06:54:43

黑马程序员——java IO流的相关文章

黑马程序员-Java IO流

--Java培训.Android培训.iOS培训..Net培训.期待与您交流!-- 一.概述 Java中与IO相关的类有很多,都集中在java.io中,都是以流的形式操作的,流是有一定的顺序,像一个管道一样,它的本质是传输数据.根据数据类型的不同可以分为字节流和字符流,根据流向的不同可以分为输入流和输出流. 字符流:因为数据有不同的编码,可以对字符进行不同的操作,其本质还是基于字节流,然后再查询相应的码表.一般用于处理纯文本数据. 字节流:可以处理所有类型数据,二进制文件(图片,音频等). 输入

黑马程序员——java——IO流——将一些字符写入到指定硬盘上的目录中去:

将一些字符写入到指定硬盘上的目录中去: import java.io.*; //将一些文字储存到硬盘的文件中去 //操作的是文字,因此选用字符流来操作 public class FileWriterDemo { public static void main(String[] args) { //创建一个可以往文件中写入字符数据的字符输出流对象 //既然是往一个文件中写入文字数据,那么在创建对象时,就必须明确该文件(用于存储数据的目的地) //如果文件不存在,则会自动创建 //如果文件存在,则会

黑马程序员——9 IO流

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- IO 一.概念:IO流即InputOutput的缩写,来处理设备间的数据传输 1.特点:对数据的操作通过流的方式,分为字节流和字符流输入流输出流 2.IO流的常用基类:字节流的抽象基流:InputStream和OutputStream  字符流的抽象基流:Reader和Writer 注:此四个类派生出来的子类名称都是以父类名作为子类名的后缀,以前缀为其功能:如InputStream子类File

黑马程序员——java基础---IO(input output)流字符流

黑马程序员——java基础---IO(input output)流字符流 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- io(input output)流特点: 1,io流用来处理数据之间的传输 2,java对数据的操作是通过流的方式: 3,java用于操作流的对象都在io包中: 4,流按操作数据分为两种:字节流和字符流: 5,流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象

黑马程序员——Java基础---IO(下)

黑马程序员——Java基础---IO(下) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供了File类.properties类.打印流.序列流等和输入输出相关的类,它们能够帮助我们更好的处理信息.下面将对它们进行简单的介绍. 一.正

黑马程序员——Java I/O流基础知识点(File类)

File工具 File类就是用俩将文件或者文件夹封装对象,弥补流对象的不足--流只能操作数据,不能操作文件夹的 封装的是路径!!! 构造方法演示 1.可以将已有的未出现的文件或者文件夹封装成对象. File f1=new File("c:\\abc\\a.txt"): File f2=new File("d:\\abc","ab.txt"打印,会打印路径.:目录分隔符,为了更好地跨平台File. File类常见功能 1,创建 createNewF

黑马程序员——Java I/O基础知识之I/O流

I/O流基础知识--字节流和字符流 文件存储在硬盘中,是以二进制表示的,只有内存中才能形成字符.数据的来源可以有硬盘,内存,控制台,网络,Java把数据从一个地方转到另一个地方的现象称为流,用InputStream和OutputStream接口来表示,这两个流里面的都是以字节为单位的,后来加入了Reader和Writer,里面操作的是字符,是两个字节为单位的. 字节流 字节流将数据写入文件 try { File file =new File("d:" +File .separator+

黑马程序员——Java基础---io(上)

黑马程序员——Java基础---io(上) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java I/O系统负责处理程序的输入和输出,I/O类库位于java.io包中,它对各种常见的输入流和输出流进行了抽象.如果数据流中最小的数据单元是字节,那么称这种流为字节流:如果数据流

黑马程序员——I/O流基础知识

I/O流 Io流 代表有能力产生数据的数据源对象或者有能力接收对象的数据接收端对象.字节流和字符流.中文字符也转编码表,jbk2万多中文字.unicode全世界的字符收录.乱码,两种不同形式的编码表.字符流里面的对象融合了编码表,以便别人使用的使用用你指定的编码方式. 基类:读和写~ 字节流 InputStream,OutputStream 字符流 Reader,Writer Writer 主力方法是writer().既然IO流是操作数据的,而数据的最常见体现形式是:文件. 需求:准备在硬盘上创