缓冲流


缓冲流是为了读取和写入的速度,提高效率主要包括:字节缓冲流和字符缓冲流

字节缓冲流:

根据流的方向,共有2个:字节缓冲输出流BufferedOutputStream和字节缓冲输入流BufferedInputStream,它们的内部都包含了一个缓冲区,通过缓冲区读写,就可以提高了IO流的读写速度

构造方法:public BufferedOutputStream(OutputStream out);

//创建基本的字节输出流

FileOutputStream fileOut=newFileOutputStream("abc.txt");

//使用高效的流,把基本的流进行封装,实现速度的提升

BufferedOutputStream out=newBufferedOutputStream(fileOut);

//2,写数据

out.write("hello".getBytes());

//3,关闭流

out.close();

}

构造方法:public BufferedInputStream(InputStream in);

FileInputStream fileIn =newFileInputStream("abc.txt");

//把基本的流包装成高效的流

BufferedInputStream in =newBufferedInputStream(fileIn);

//2,读数据

int ch = -1;

while( (ch = in.read()) != -1 ) {

//打印

System.out.print((char)ch);

}

//3,关闭

in.close();

高效的实现复制文件;

BufferedInputStream in =newBufferedInputStream(newFileInputStream("c:\\a.txt"));

//2,指定目的地

BufferedOutputStream out=newBufferedOutputStream(newFileOutputStream("c:\\b.txt"));

//3,读数据

byte[] buffer =newbyte[1024];

intlen = -1;

while( (len = in.read(buffer)) != -1) {

//4,写数据

out.write(buffer, 0, len);

}

//5,关闭流

in.close();

out.close();

字符缓冲流:

字符缓冲输入流BufferedReader。字符缓冲输出流BufferedWriter

BufferedWriter

//创建流

//基本字符输出流

FileWriter fileOut =newFileWriter("file.txt");

//把基本的流进行包装

BufferedWriter out =newBufferedWriter(fileOut);

//2,写数据

for(inti=0; i<5; i++) {

out.write("hello");

out.newLine();//写入换行

}

//3,关闭流

out.close();

}

BufferedReader

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

publicStringreadLine()读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回null

//1,创建流

BufferedReader in =newBufferedReader(newFileReader("file.txt"));

//2,读数据

//一次读取文本中一行的字符串内容

String line =null;

while( (line = in.readLine()) !=null){

System.out.println(line);

}

//3,关闭流

in.close();

使用缓冲流高效的完成文件的复制

//1,指定数据源,是数据源中读数据,采用输入流

BufferedReader in =newBufferedReader(newFileReader("file.txt"));

//2,指定目的地,是把数据写入目的地,采用输出流

BufferedWriter out =newBufferedWriter(newFileWriter("copyFile.txt"));

//3,读数据

String line =null;

while( (line = in.readLine()) !=null) {

//4,写数据

out.write(line);

//写入换行符号

out.newLine();}

//5,关闭流

out.close(); in.close();

}

这么多流该如何选择:

目的设备:

硬盘:文件File开头。

内存:数组,字符串。

屏幕:System.out

网络:Socket

完全可以明确具体要使用哪个流对象。

知识点总结

字节流

字节输入流InputStream

FileInputStream操作文件的字节输入流

BufferedInputStream高效的字节输入流

字节输出流OutputStream

FileOutputStream操作文件的字节输出流

BufferedOutputStream高效的字节输出流

字符流

字符输入流Reader

FileReader操作文件的字符输入流

BufferedReader高效的字符输入流

InputStreamReader输入操作的转换流(把字节流封装成字符流)

字符输出流Writer

FileWriter操作文件的字符输出流

BufferedWriter高效的字符输出流

OutputStreamWriter输出操作的转换流(把字节流封装成字符流)

方法:

读数据方法:

read()一次读一个字节或字符的方法

read(byte[]char[])一次读一个数组数据的方法

readLine()一次读一行字符串的方法(BufferedReader类特有方法)

readObject()从流中读取对象(ObjectInputStream特有方法)

写数据方法:

write(int)一次写一个字节或字符到文件中

write(byte[] char[])一次写一个数组数据到文件中

write(String)一次写一个字符串内容到文件中

uwriteObject(Object )写对象到流中(ObjectOutputStream类特有方法)

unewLine()写一个换行符号(BufferedWriter类特有方法)

向文件中写入数据的过程

1,创建输出流对象

2,写数据到文件

3,关闭输出流

从文件中读数据的过程

1,创建输入流对象

2,从文件中读数据

3,关闭输入流

l文件复制的过程

1,创建输入流(数据源)

2,创建输出流(目的地)

3,从输入流中读数据

4,通过输出流,把数据写入目的地

5,关闭流

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

推荐阅读更多精彩内容