`
zhuxinzx
  • 浏览: 293792 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

BufferedInputStream与BufferedOutputStream的使用

    博客分类:
  • JAVA
阅读更多
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()将缓冲区中的数据全部写出目的流中。

分享到:
评论

相关推荐

    BufferedOutputStream与BufferedInputStream

    在Java I/O流处理中,`BufferedOutputStream` 和 `BufferedInputStream` 是两种非常重要的类,它们分别属于字节缓冲输出流和字节缓冲输入流。这两个类都是为了提高I/O操作的效率,通过在实际操作底层流之前,先将...

    JAVA IO-(FileBuffered的InputOutputStream的基本操作)

    为了提高效率,我们通常会结合BufferedInputStream和BufferedOutputStream使用,以实现缓冲功能。本文将详细探讨Java中FileBuffered的InputOutputStream的基本操作。 1. FileInputStream与FileOutputStream: - ...

    基于Java的源码-二进制IO类与文件复制操作实例.zip

    2. **BufferedInputStream与BufferedOutputStream**: 为了提高性能,Java提供了缓冲流,它们在InputStream和OutputStream的基础上添加了一个内部缓冲区。通过BufferedInputStream和BufferedOutputStream,可以批量...

    java初学自学ppt教程 7

    在学习过程中,务必理解并熟练掌握上述知识点,通过实例练习来巩固,如使用FileInputStream和FileOutputStream读写文件,以及使用BufferedInputStream和BufferedOutputStream优化文件操作。在处理异常时,要正确使用...

    BufferedInputStream 比 InputStream 性能点(实验数据报告)

    此外,在Java I/O库中,还存在BufferedOutputStream用于提高输出流的性能,它同样带有缓冲区,工作原理与BufferedInputStream类似,只是方向相反,它用于提高数据写入的性能。 总的来说,BufferedInputStream通过对...

    java_io.doc

    4. **BufferedInputStream 和 BufferedOutputStream**: 这些类引入了缓冲机制,避免每次读写操作都直接与底层资源交互,提高了性能。BufferedInputStream和BufferedOutputStream分别用于缓冲输入流和输出流,通过...

    Java读存二进制大文件块

    Java读存大块二进制资料文件,java.io 包中提供了BufferedInputStream 和BufferedOutputStream 类来缓存的读写流。但是读写大块的数据文件时,使用这两个类的效果并不是很好。本例演示了如何自定义缓存区,并使用不...

    bytestreamdemo.zip

    java IO 字节流练习代码 FileInputStream和...BufferedInputStream 和 BufferedOutputStream DataInputStream 和 DataOutputStream ObjectInputStream和ObjectOutputStream PrintStream PushbackInputStream

    JDATASTREAMDEMO_java_

    Java reads and stores large binary data files. The java.io package provides BufferedInputStream and BufferedOutputStream classes to buffer read and write streams

    java课程设计局域网文件传输系统源代码

    在该系统中,使用了BufferedInputStream和BufferedOutputStream来实现文件传输。BufferedInputStream和BufferedOutputStream是Java中的两个流类,用于读取和写入文件。 5. 网络通信 在该系统中,使用了InetAddress...

    Java I/O 流代码实例大全(01~09)

    Java I/O 流代码实例大全(01~09) File、FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter

    Java基础知识-day10【缓冲流、转换流、序列化流、Files】.pdf

    在上面的代码中,我们使用了BufferedInputStream和BufferedOutputStream来复制一个大文件,结果发现缓冲流的效率远高于基本的流。这是因为缓冲流可以减少系统IO次数,从而提高读写的效率。 转换流是一种特殊的流,...

    IO各种操作文件,字符流、字节流等

    为了提高效率,通常会结合BufferedInputStream和BufferedOutputStream使用。 筛选文件是指根据特定条件查找或过滤文件,这通常需要遍历目录结构。File类的listFiles()方法可以返回指定目录下的所有文件和子目录,...

    安卓Android源码——IOStreamSample.rar

    在Android中,我们主要关注的是与文件操作相关的类,如FileInputStream、FileOutputStream、BufferedInputStream和BufferedOutputStream等。 二、InputStream的使用 InputStream是所有字节输入流的抽象基类,提供...

    JavaIo流分析图

    分析Java常用IO流,包括InputStream、OutputStream、FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream、Reader、Writer、InputStreamReader、OutputStreamWriter、FileReader、...

    Java I/O 流代码实例大全(01~15)

    File、FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter、ByteArrayInputStream、ByteArrayOutputStream、...

    安卓Android源码——(游戏保存Stream).zip

    3. **BufferedInputStream与BufferedOutputStream**:为了提高I/O操作的效率,通常会使用缓冲流。BufferedInputStream和BufferedOutputStream可以在多次读写操作之间存储数据,减少对底层文件系统的直接调用,从而...

    JAVA开发JAVA文件传输(论文+源代码).zip

    在传输大文件时,可以使用BufferedInputStream和BufferedOutputStream来提高效率,因为它们能一次性处理多个字节。此外,还有ObjectInputStream和ObjectOutputStream用于序列化和反序列化对象,便于在网络间传递复杂...

    java代码实例

    2. 缓冲处理:可能会使用BufferedInputStream和BufferedOutputStream提高数据传输效率。 3. 数据转换:可能涉及将字节数据转换为其他数据类型,例如Integer或String。 4. 网络通信:如果涉及到网络编程,可能会用到...

Global site tag (gtag.js) - Google Analytics