java io流的字节流文件传输方式

来源:互联网 发布:手机vb编辑器使用 编辑:程序博客网 时间:2024/06/05 16:47

3种字节流的文件写入

FileOutputStream        单字节写入

DataOutputStream      多字节写入

BufferedOutputStream    带缓冲的多字节写入(有缓冲必须加 flush()来刷新缓冲区,前两种这不必要 )


以搬砖来举例,FileOutputStream 相当于直接一块一块的把砖搬到目的地;DataOutputStream相当于直接一堆一堆的把砖搬到目的地;BufferedOutputStream相当于把砖搬到小车上(缓冲区),再一起搬到目的地。一般而言,BufferedOutputStream  方法会明显快过前两种

/*

FileInputStream  DataInputStream  BufferedIntputStream 同理

/*

下面以 BufferedIntputStream举例说明 


import java.io.*;
import java.io.IOException;;

public class test {

public static void main(String[] agrs) throws IOException{

        File scrfile = new File("E:\\stady\\1.txt");        //定义File 对象
        File destfile = new File("E:\\stady\\2.txt");      //定义File 对象
if(!scrfile.exists()){
throw  new IllegalArgumentException("文件位置不存在");           //用 IllegalArgumentException排除可能的两种错误
}
if(!scrfile.isFile()){
throw new IllegalArgumentException("不是文件");
}
BufferedInputStream in = new BufferedInputStream(                         //将file由FileOutputStream传递到BufferedInputStream
new FileInputStream(scrfile));
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(destfile));
int c;
while ((c=in.read())!=-1){                                   //将文件读取使用read()方法,当c!= -1时,文件未读完
out.write(c);                                                  //将文件写入使用write()方法
out.flush();                                                    //刷新缓冲区
}
in.close();                                                             //关闭文件,不关闭可能会产生未知错误
out.close();
}
}


0 0