1. java.io.BufferedInputStream与java.io.BufferedOutputStream可以为InputStream,OutputStream类增加缓冲区功能。构建BufferedInputStream实例时,需要给定一个InputStream类型的实例,实现BufferedInputStream时,实际上最后是实现InputStream实例。同样,构建BufferedOutputStream时,也需要给定一个OutputStream实例,实现BufferedOutputStream时,实际上最后是实现OutputStream实例。
2. BufferedInputStream的数据成员buf是一个位数组,默认为2048字节。当读取数据来源时,例如文件,BufferedInputStream会尽量将buf填满。当使用read()方法时,实际上是先读取buf中的数据,而不是直接对数据来源作读取。当buf中的数据不足时,BufferedInputStream才会再实现给定的InputStream对象的read()方法,从指定的装置中提取数据。
3. BufferedOutputStream的数据成员buf也是一个位数组,默认为512字节。当使用write()方法写入数据时实际上会先将数据写到buf中,当buf已满时才会实现给定的OutputStream对象的write()方法,将buf数据写到目的地,而不是每次都对目的地作写入的动作。
package ysu.hxy;
import java.io.*;
public class BufferedStreamDemo
{
public static void main(String[] args)
{
try
{
byte[] data = new byte[1];
File srcFile = new File(args[0]);
File desFile = new File(args[1]);
BufferedInputStream bufferedInputStream =
new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bufferedOutputStream =
new BufferedOutputStream(new FileOutputStream(desFile));
System.out.println("复制文件:"+srcFile.length()+"字节");
while(bufferedInputStream.read(data)!=-1)
{
bufferedOutputStream.write(data);
}
//将缓冲区中的数据全部写出
bufferedOutputStream.flush();
//关闭流
bufferedInputStream.close();
bufferedOutputStream.close();
System.out.println("复制完成");
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("using:java UseFileStream src des");
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
};
package ysu.hxy;
import java.io.*;
public class BufferedStreamDemo
{
public static void main(String[] args)
{
try
{
byte[] data = new byte[1];
File srcFile = new File(args[0]);
File desFile = new File(args[1]);
BufferedInputStream bufferedInputStream =
new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bufferedOutputStream =
new BufferedOutputStream(new FileOutputStream(desFile));
System.out.println("复制文件:"+srcFile.length()+"字节");
while(bufferedInputStream.read(data)!=-1)
{
bufferedOutputStream.write(data);
}
//将缓冲区中的数据全部写出
bufferedOutputStream.flush();
//关闭流
bufferedInputStream.close();
bufferedOutputStream.close();
System.out.println("复制完成");
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("using:java UseFileStream src des");
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
};
为了确保缓冲区中的数据一定被写出至目的地,建议最后执行flush()将缓冲区中的数据全部写出目的流中。
分享到:
相关推荐
在Java I/O流处理中,`BufferedOutputStream` 和 `BufferedInputStream` 是两种非常重要的类,它们分别属于字节缓冲输出流和字节缓冲输入流。这两个类都是为了提高I/O操作的效率,通过在实际操作底层流之前,先将...
为了提高效率,我们通常会结合BufferedInputStream和BufferedOutputStream使用,以实现缓冲功能。本文将详细探讨Java中FileBuffered的InputOutputStream的基本操作。 1. FileInputStream与FileOutputStream: - ...
2. **BufferedInputStream与BufferedOutputStream**: 为了提高性能,Java提供了缓冲流,它们在InputStream和OutputStream的基础上添加了一个内部缓冲区。通过BufferedInputStream和BufferedOutputStream,可以批量...
在学习过程中,务必理解并熟练掌握上述知识点,通过实例练习来巩固,如使用FileInputStream和FileOutputStream读写文件,以及使用BufferedInputStream和BufferedOutputStream优化文件操作。在处理异常时,要正确使用...
此外,在Java I/O库中,还存在BufferedOutputStream用于提高输出流的性能,它同样带有缓冲区,工作原理与BufferedInputStream类似,只是方向相反,它用于提高数据写入的性能。 总的来说,BufferedInputStream通过对...
4. **BufferedInputStream 和 BufferedOutputStream**: 这些类引入了缓冲机制,避免每次读写操作都直接与底层资源交互,提高了性能。BufferedInputStream和BufferedOutputStream分别用于缓冲输入流和输出流,通过...
Java读存大块二进制资料文件,java.io 包中提供了BufferedInputStream 和BufferedOutputStream 类来缓存的读写流。但是读写大块的数据文件时,使用这两个类的效果并不是很好。本例演示了如何自定义缓存区,并使用不...
java IO 字节流练习代码 FileInputStream和...BufferedInputStream 和 BufferedOutputStream DataInputStream 和 DataOutputStream ObjectInputStream和ObjectOutputStream PrintStream PushbackInputStream
Java reads and stores large binary data files. The java.io package provides BufferedInputStream and BufferedOutputStream classes to buffer read and write streams
在该系统中,使用了BufferedInputStream和BufferedOutputStream来实现文件传输。BufferedInputStream和BufferedOutputStream是Java中的两个流类,用于读取和写入文件。 5. 网络通信 在该系统中,使用了InetAddress...
Java I/O 流代码实例大全(01~09) File、FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
在上面的代码中,我们使用了BufferedInputStream和BufferedOutputStream来复制一个大文件,结果发现缓冲流的效率远高于基本的流。这是因为缓冲流可以减少系统IO次数,从而提高读写的效率。 转换流是一种特殊的流,...
为了提高效率,通常会结合BufferedInputStream和BufferedOutputStream使用。 筛选文件是指根据特定条件查找或过滤文件,这通常需要遍历目录结构。File类的listFiles()方法可以返回指定目录下的所有文件和子目录,...
在Android中,我们主要关注的是与文件操作相关的类,如FileInputStream、FileOutputStream、BufferedInputStream和BufferedOutputStream等。 二、InputStream的使用 InputStream是所有字节输入流的抽象基类,提供...
分析Java常用IO流,包括InputStream、OutputStream、FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream、Reader、Writer、InputStreamReader、OutputStreamWriter、FileReader、...
File、FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter、ByteArrayInputStream、ByteArrayOutputStream、...
3. **BufferedInputStream与BufferedOutputStream**:为了提高I/O操作的效率,通常会使用缓冲流。BufferedInputStream和BufferedOutputStream可以在多次读写操作之间存储数据,减少对底层文件系统的直接调用,从而...
在传输大文件时,可以使用BufferedInputStream和BufferedOutputStream来提高效率,因为它们能一次性处理多个字节。此外,还有ObjectInputStream和ObjectOutputStream用于序列化和反序列化对象,便于在网络间传递复杂...
2. 缓冲处理:可能会使用BufferedInputStream和BufferedOutputStream提高数据传输效率。 3. 数据转换:可能涉及将字节数据转换为其他数据类型,例如Integer或String。 4. 网络通信:如果涉及到网络编程,可能会用到...