IO流

一.IO流概念原理

1.在Java程序中,对于数据的输入/输出操作以“流” (stream) 方式进行;

2。J2SDK提供了各种各样的“流”类,用以获取不同种类的数据;程序中通过标准的方法输入或输出数据。

3.Java的流类型一般位于http://java.io包中

二.流的分类

1.流的方向

输入流:数据源流到程序(InputStream  Reader读进来)

输出流:程序流到目的地(OutputStream  Writer写出去)

2. 处理数据单元

字节流:按照字节读取数据(InputStream OutputStream)

字符流:按照字符读取数据(Reader Writer)

3. 功能不同

节点流:可以直接从数据源或目的地读写数据

处理流:不能直接连接到数据源或者目的地,是其他流进行封装。目的是简化操作和提高性能。

三.节点流和处理流的关系

1.节点流处于io操作的第一线,所有操作必须通过他们进行;

2.处理流可以对其他流进行处理(提高效率或操作灵活性).

四.IO流体系

1.InputStream和OutputStream

Java语言中最基本的两个字节输入输出类。其他所有字节输入输出流类都继承自这两个基类。这两个类都是抽象类,不能创建它们的实例,只能使用它们的子类.

2. Reader和Writer

Java语言中最基本的两个字符输入输出类。其他所有字符输入输出流类都继承自这两个基类。这两个类都是抽象类,不能创建它们的实例,只能使用它们的子类.

五.文件字节流

1.FileInputStream/FileOutputStream

概念:

FileInputStream通过字节的方式读取文件,适合读取所有类型的文件(图像、视频、文本文件等)。Java也提供了FileReader专门读取文本文件。

FileOutputStream 通过字节的方式写数据到文件中,适合所有类型的文件。Java也提供了FileWriter专门写入文本文件。

方法:使用FileInputStream读取文件内容

1.abstract int read( );

2.int read( byte b[ ] );

3.int read( byte b[ ], int off, int len );

4.int available( );

5.close( );

使用FileOutputStream写内容到文件

1.abstract void write( int b );

2.void write( byte b[ ] );

3.void write( byte b[ ], int off, int len );

4.void flush( );

5.void close( );

六.文件字符流Reader/Writer

为什么要使用字符流:文件字节流可以处理所有的文件,但是字节流不能很好的处理Unicode字符,经常会出现“乱码”现象。所以,我们处理文本文件,一般可以使用文件字符流,它以字符为单位进行操作

方法使用Reader读取文件内容

1.int read( );

2.int read( char [ ]cbuf );

3.int read( char [ ]cbuf, int off, int len );

4.int available( );

5.close( );

使用Writer写内容到文件

1.void write( int c );

2.void write( char[]cbuf);

3.abstract void write( char [ ]cbuf, int off, int len );

4.void write(String str);

5.abstract void flush( );

6.void close( );

七.缓冲字节流_缓冲字符流

BufferedInputStream和BufferedOutputStream是处理流(包装流)

作用:

读文件和写文件都使用了缓冲区,减少了读写次数,从而提高了效率

当创建这两个缓冲流的对象时时,会创建了内部缓冲数组,缺省使用32字节大小的缓冲区.

当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区

当写入数据时,首先写入缓冲区,当缓冲区满时,其中的数据写入所连接的输出流。使用方法flush()可以强制将缓冲区的内容全部写入输出流

关闭流的顺序和打开流的顺序相反.只要关闭高层流即可,关闭高层流其实关闭的底层节点流

Flush的使用:手动将buffer中内容写入文件

缓冲字符流

1.BufferedReader        readLine() 读取一个文本行的数据

2.BufferedWriter          newLine();写入一个行分隔符。

使用缓冲字符流是复制文本文件常用的方式

八.转换流InputStreamReader和OutputStreamWriter

作用:处理流      用于将字节流转化成字符流,字符流与字节流之间的桥梁

InputStreamReader的作用是把InputStream转换成Reader

OutputStreamWriter的作用是把OutputStream转换成Writer

九.打印流PrintStream与PrintWriter

特点:PrintStream

1.PrintStream提供了一系列的print()和println(),可以实现将基本数据类型格式化成字符串输出。对象类型将先调用toString(),然后输出该方法返回的字符串

2.System.out就是PrintStream的一个实例,代表显示器

3.System.err 也是PrintStream的一个实例,代表显示器

4.PrintStream的输出功能非常强大,通常需要输出文本内容,都可以将输出流包装成PrintStream后进行输出

5.PrintStream的方法都不抛出IOException

PrintReader

1.PrintStream的对应字符流,功能相同,方法对应。

2.PrintWriter的方法也不抛出IOException

3.复制文件时可以使用PrintWriter代替BufferedWriter完成,更简单

十.数据流DataInputStream和DataOutputStream

作用:数据流将“基本数据类型与字符串类型”作为数据源,从而允许程序以与机器无关的方式从底层输入输出流中操作Java基本数据类型与字符串类型。

特点:

1.提供了可以存取所有Java基础类型数据(如:int,double 等)和String的方法。

2.处理流,只针对字节流,二进制文件

3.输入流链和输出流链

注意:只要关闭上层流即可

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358

推荐阅读更多精彩内容