字节缓冲流——BufferedOutputStream和BufferedInputStream
程序员文章站
2024-03-04 20:40:24
...
我们都知道对一个文件进行频繁的读写操作,其效率是非常低的,所以又有了缓冲流,它提高IO效率,减少访问磁盘的次数,可以将数据存储在缓冲区中,flush是将缓冲区的内容写入到文件中,也可以直接close。
首先我们先来看看字节缓冲流——BufferedOutputStream和BufferedInputStream,当使用BufferedOutputStream缓冲流时,应用程序就可以将各个字节写入缓冲流中,而不必针对每一个字节写入文件之中。
public class BufferStreamDemo {
public static void main(String[] args) {
write();
}
private static void write(){
File file = new File("F:/demo/test.txt");
try {
OutputStream os = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(os);
String info = "你好,世界";
bos.write(info.getBytes());
bos.flush();
bos.close();
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
其实使用也是非常简单,就是在OutputStream外面又包裹了一层,最后我们需要逐层的关闭流。
BufferedOutputStream在创建时,会创建一个内部缓冲数组,用于缓冲数据。 其使用的方法也是非常简单,和上述一样,就是又包裹了一层,如下:
public class BufferStreamDemo {
public static void main(String[] args) {
read();
}
private static void read(){
File file = new File("F:/demo/test.txt");
try {
InputStream is = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(is);
byte[] bytes = new byte[1024];
StringBuilder sb = new StringBuilder();
int len = -1;
while ((len = bis.read(bytes)) != -1){
sb.append(new String(bytes, 0, len));
}
System.out.println(sb.toString());
bis.close();
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
其实BufferedOutputStream和BufferedInputStream的内部就是有一个数组用于缓冲
上一篇: java.lang.UnsatisfiedLinkError: %1 不是有效的Win32应用程序错误解决
下一篇: 转:20 个对开发者非常有用的 Google APIs 博客分类: WEB 2.0API APIgoogleweb service
推荐阅读
-
字节缓冲流——BufferedOutputStream和BufferedInputStream
-
I/O流,字节流和字符流区别
-
字节缓冲流--复制文件
-
利用BufferedOutputStream提高字节输出输入流和复制效率
-
【Java IO流】字节流和字符流的实例讲解
-
IO流【字节流、字符流、缓冲流、转换流、序列化流】
-
java 字节流和字符流的区别详解
-
Java:字节流和字符流(输入流和输出流)
-
Python3: 内存中的 IO 流缓冲区 - StringIO 和 BytesIO
-
J05-Java IO流总结五 《 BufferedInputStream和BufferedOutputStream 》