Java中I/O流之缓冲流
Java 中的缓冲流:
1. 缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法(带缓冲区的,显著减少对 IO 的读写次数,保护硬盘).
2. J2SDK 提供了四种缓冲流,其常用构造方法如下:
2.1 BufferedReader(Reader in) // 带缓冲区的输入流;
BufferedReader(Reader in, int size) // 自定义缓冲区的大小;
2.2 BufferedWriter(Writer out) // 带缓冲区的输出流;
BufferedWriter(Writer in, int size) // 自定义缓冲区的大小;
2.3 BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in, int size)
2.4 BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out, int size)
3. 缓冲输入流支持其父类的 mark 和 reset 方法.
4. BufferedReader 提供了 readLine 方法用于读取一行字符(以 \r 或 \n 分隔).
5. BufferedWriter 提供了 newLine 用于写入一个行分隔符.
6. 对于输出的缓冲流,写出的数据会先在内存中缓存,可以使用 flush 方法使内存中的数据立刻写出.
Demo_1:
- import java.io.*;
- class Test {
- public static void main(String[] args) {
- try {
- FileInputStream fis = new FileInputStream("E:/eclipse projiect/data.txt");
- BufferedInputStream bis = new BufferedInputStream(fis); // 有了带缓冲区的功能
- int c = 0;
- System.out.println(bis.read()); // (char)bis.read
- System.out.println(bis.read()); // (char)bis.read
- bis.mark(100); // 将标记放到第100个字符,从第100个字符开始读;
- for(int i=0;i<=20 && (c=bis.read())!=-1;i++){ // ASCII(13\10)回车换行
- System.out.print(c+" "); // (char)c
- }
- System.out.println();
- bis.reset();
- for(int i=0;i<=20 && (c=bis.read())!=-1;i++){
- System.out.print(c+" "); // (char)c
- }
- bis.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e){
- e.printStackTrace();
- }
- }
- }
运行结果:
105
109
112 111 114 116 32 106 97 118 97 46 105 111 46 70 105 108 101 73 110 112 117
112 111 114 116 32 106 97 118 97 46 105 111 46 70 105 108 101 73 110 112 117
Demo_2:
- import java.io.*;
- class Test {
- public static void main(String[] args) {
- try {
- FileReader fr = new FileReader("E:/eclipse projiect/data.txt");
- BufferedReader br = new BufferedReader(fr);
- FileWriter fw = new FileWriter("E:/eclipse projiect/data1.txt");
- BufferedWriter bw = new BufferedWriter(fw);
- String s = null;
- for(int i=1;i<=10;i++){
- s = String.valueOf(Math.random()); // 将随机数据转换为字符串String.valueOf
- bw.write(s);
- bw.newLine();
- }
- bw.flush();
- while((s=br.readLine())!=null){ // 直接读一行内容
- System.out.println(s);
- }
- bw.close();
- br.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
运行结果:
君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。(倾耳听 一作:侧耳听)
data1.txt 中的内容:
0.39916663870104396
0.6346803787460625
0.7115998585645587
0.02194201846506627
0.9838653370130725
0.8242365903101627
0.8371583395463328
0.015565811381592853
0.04838265648243956
0.5866850861736586
Java中I/O流之缓冲流的更多相关文章
- java基础(24):转换流、缓冲流
1. 转换流 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamReader或者OutputS ...
- java - >IO流_缓冲流(高效流)
缓冲流(高效流) 在我们学习字节流与字符流的时候,大家都进行过读取文件中数据的操作,读取数据量大的文件时,读取的速度会很慢,很影响我们程序的效率,那么,我想提高速度,怎么办? Java中提高了一套缓冲 ...
- IO流之缓冲流
缓冲流 Java中提高了一套缓冲流,它的存在,可提高IO流的读写速度 缓冲流,根据流的分类字节缓冲流与字符缓冲流. 字节缓冲流 字节缓冲流根据流的方向,共有2个 l 写入数据到流中,字节缓冲输出流 ...
- IO流----转换流、缓冲流
打开一个文本文件,另存为: Ansi就是系统默认编码(就是gbk) 建一个编码是utf-8的txt文件, 例: import java.io.FileWriter; import java.io.IO ...
- IO(转换流、缓冲流)
第1章 转换流 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamReader或者Output ...
- Java_转换流和缓冲流
今日内容介绍 转换流 缓冲流 1 转换流 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamR ...
- java的 IO流之缓冲流(转载)
java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装.当对文件或其他目标频繁读写或操作效率低,效能差.这时使用缓冲流能够更高效的读写信息.因为缓冲流先将数据缓存起来 ...
- JAVA基础复习与总结<八> 缓冲流_数据流_对象流_IO总结
缓冲流.数据流以及对象流 一.缓冲流 缓冲流的概念:在读写的时候,对于单字节的读取会造成硬盘的频繁读写,增加访问次数,降低了读取文件的效率.而引入缓冲流之后,就可以将多个字节写入缓冲区,在缓冲区积累之 ...
- Java转换流、缓冲流、流操作规律整理
转换流 1.1 OutputStreamWriter类 OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字 ...
- JAVA基础之转换流和缓冲流
个人理解: 在理解的字符流和字节流的区别后.要是想读取指定的编码格式的文件时,特别是不是默认的格式时,就需要转换流了,需要注意的是字符流是需要清除缓冲区的:当需要快速的进行读取时,则需要缓冲流.存在即 ...
随机推荐
- Python入门 —— 02基础语法
基础语法入门学习推荐: 简明 Python 教程 下文仅为入门推荐书籍的补充与重点 多行语句:末尾使用斜杠 ( ) ,将一行分为多行 var = item1 + item2 + item3 注释: ...
- Linux中Zookeeper部署和集群部署
自己网上下载安装包,我下载的是tar.gz安装包直接解压,也可以下载rpm格式 1.下载zookeeper安装包,放到/usr/local/zookeeper安装包网上下载 2.解压文件tar -zx ...
- IE8 如何 不显示 选项 卡,直接在任务显示 各个页面?
IE8 如何 不显示 选项 卡,直接在任务显示 各个页面? 在 工具->Internet 选项(o) ->常规--选项卡-设置->把第一个勾去掉 “启用选项卡浏览(需要重新启动 ...
- opencv移植(二)
原文:https://blog.csdn.net/Guet_Kite/article/details/78667175?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接 ...
- C语言之二叉树
规定:根节点的值大于左节点但小于右节点的值,所以二叉树的值插入是唯一的,最后形成的树只跟根节点有关 定义节点: struct tree_node { TypeElem elem; stru ...
- python中的rabbitmq
介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.MQ全称为Message Queue, 消息队列(MQ)是一种应用 ...
- jxls-1.x导出excel入门——基本操作
请注意,一下内容均基于1.x版本,2.x版本将另开随笔记录 一.概述 JXLS是基于Jakarta POI API的Excel报表生成工具,可以生成精美的Excel格式报表.它采用标签的方式,类似J ...
- BZOJ4247_挂饰_KEY
题目传送门 背包的变形,不得不说卡了我很久(估计是下午睡傻了). 设f[i][j]为前i个物品剩下j个挂钩. f[i][j]=max(f[i-1][j],f[i-1][max(j-a[i].x,0)+ ...
- 抓猫_KEY
抓猫 题面如下: [ 题目描述] 流浪猫布满城市的每一个角落, 非常影响市容市貌, 作为城市聘请的抓猫者, 你有一 种捕捉器, 一定可以捕捉到所有走到里面的猫, 更加幸运的是你有一个非常厉害的动物心理 ...
- Webservice HTTP
由于项目需要:自己写了一个WebserviceDemo,把遇到的问题记下来. 方式一 :使用代理类来访问Webservice,此方式不讲解,感觉复杂(神坑). (生成的代理路径 C:\Users\ad ...