java缓冲流读写数据
4个回答
推荐于2018-05-17 · 知道合伙人数码行家
关注
展开全部
--- 下面都是以字节流方式操作 ---
//读数据:
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("xx.xx"));
byte[] b = new byte[1024];
int len = 0;
while((len=bis.read(b))!-1){
//这样就读取并输出了,如果是别的文件的话乱码,因为二进制文件
System.out.println(new String(b,0,len));
}
bis.close();//关闭流,节省资源
//写数据:
BufferedOutputStream bos = new BufferedOutputStream(new FileOuputStream("xx.xx"));
//使用缓冲区写二进制字节数据
bos.write("xxxxx".getBytes());
bos.close();//关闭流,节省资源
如果字符流的话就是:
BufferedReader //读取
BufferedWriter //写入
展开全部
首先起到缓冲作用的并不是你所说的某个方法实现的;缓冲是你建立某个流的时候由某个缓冲类进行包装,当你调用读写操作时,自动触发数据缓冲操作的。
还有,用不用缓冲效率的高低你从小数据量的操作很难看出来,如果,你有大批量的文件要处理的时候,你会很头疼没有用缓冲类的。
再有,我们平时用的InputStream类等是字节流,而FileReader等类都只是字符流,它们对数据操作时不会起到缓冲作用。这些类读写数据时,每进行一次操作都会去访问一次文件,这样效率自然就会很低。所谓缓冲其实就是,缓冲包装类会在你进行读写操作之前,读入一批数据。然后进行读写操作时直接从缓冲区取数据(访问缓冲区),当缓冲区的数据操作完毕时才再次读取文件。其实,缓冲类的作用就跟电脑内存条的作用是一样的。
还有,用不用缓冲效率的高低你从小数据量的操作很难看出来,如果,你有大批量的文件要处理的时候,你会很头疼没有用缓冲类的。
再有,我们平时用的InputStream类等是字节流,而FileReader等类都只是字符流,它们对数据操作时不会起到缓冲作用。这些类读写数据时,每进行一次操作都会去访问一次文件,这样效率自然就会很低。所谓缓冲其实就是,缓冲包装类会在你进行读写操作之前,读入一批数据。然后进行读写操作时直接从缓冲区取数据(访问缓冲区),当缓冲区的数据操作完毕时才再次读取文件。其实,缓冲类的作用就跟电脑内存条的作用是一样的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
package cn.io.demo;
import java.io.*;
/*
缓冲区、
通过缓冲区复制文本
该缓冲区提供了一个一次读一行的方法readLine,方便与文本数据的获取
当返回null时,表示读到文件末尾。
readLine方法返回的时候只返回回车符之前的数据内容,并不返回回车符
*/
public class BufferedReadLine
{
public static void main(String[]args)throws IOException
{
BufferedWriter bufw=new BufferedWriter(new FileWriter("f:\\啊啊.txt"));
BufferedReader bufr=new BufferedReader(new FileReader("e:\\文本.txt"));
String line=null; //两个流的中转站就是这个
while((line=bufr.readLine())!=null)
{
bufw.write(line);
bufw.newLine(); //这个方法就是回车符,每次输出完必需加newLine()
bufw.flush();
}
bufr.close();
bufw.close();
}
}
import java.io.*;
/*
缓冲区、
通过缓冲区复制文本
该缓冲区提供了一个一次读一行的方法readLine,方便与文本数据的获取
当返回null时,表示读到文件末尾。
readLine方法返回的时候只返回回车符之前的数据内容,并不返回回车符
*/
public class BufferedReadLine
{
public static void main(String[]args)throws IOException
{
BufferedWriter bufw=new BufferedWriter(new FileWriter("f:\\啊啊.txt"));
BufferedReader bufr=new BufferedReader(new FileReader("e:\\文本.txt"));
String line=null; //两个流的中转站就是这个
while((line=bufr.readLine())!=null)
{
bufw.write(line);
bufw.newLine(); //这个方法就是回车符,每次输出完必需加newLine()
bufw.flush();
}
bufr.close();
bufw.close();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-09-11
展开全部
使用
BufferedInputStream ,
BufferedOutputStream,
BufferedReader,
BufferedWriter
封装
BufferedInputStream ,
BufferedOutputStream,
BufferedReader,
BufferedWriter
封装
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询