java常用字节流

简介: 常用的字节流有FileInputStream和FileOutputStream、BufferedInputStream和BufferedOutputStream、DataInputStream和DataOutputStream。FileInputStream和FileOutputStream是基础的字节输入和输出流,通常在创建缓冲流时需要使用到,也可以用来做文件复

常用的字节流有FileInputStream和FileOutputStream、BufferedInputStream和BufferedOutputStream、DataInputStream和DataOutputStream。

FileInputStream和FileOutputStream是基础的字节输入和输出流,通常在创建缓冲流时需要使用到,也可以用来做文件复制的功能。

 * fileInputStream和fileOutputStream字节输入输出流实现文件的复制
     *
     * @author:tuzongxun
     * @Title: fileInAndOuTest
     * @param
     * @return void
     * @date Jul 20, 2016 10:21:41 AM
     * @throws FileNotFoundException
     */
    public static void fileInAndOuTest() throws IOException {
        File file = new File("C:\\Users\\tuzongxun123\\Desktop\\ioTest1.txt");
        // 创建一个fileInputStream对象
        FileInputStream fileInputStream = new FileInputStream(file);
        FileOutputStream fileOutputStream = new FileOutputStream(new File("C:\\Users\\tuzongxun123\\Desktop\\ioTest.txt"));
        // 获取文件中字符的长度
        int leng = fileInputStream.available();
        System.out.println(leng);
        for (int i = 0; i < leng; i++) {
            // 读取每个字节
            int in = fileInputStream.read();
            System.out.print(in);
            // 把读取的字节写入到另一个文件
            fileOutputStream.write(in);
        }
        fileInputStream.close();
        // 使文件立即写入到磁盘
        fileOutputStream.flush();
        fileOutputStream.close();
    }

BufferedInputStream和BufferedOutputStream是缓冲字节输入输出流,相对于基础的字节流有更高的效率,而效率更高的原理在于用空间换取时间。
也就是说使用缓冲流的时候,会先把一定的数据放到缓冲区,也就是内存中,然后read的时候直接从缓冲区读取,这样就减少了读写磁盘文件的次数,从而减少读写时间。

/**
     * BufferedInputStream和BufferedOutputStream缓冲流复制文件
     * 
     * @author:tuzongxun
     * @Title: bufferedTest
     * @param @throws IOException
     * @return void
     * @date Jul 21, 2016 9:05:57 AM
     * @throws
     */
    public static void bufferedTest() throws IOException {
        File file = new File("C:\\Users\\tuzongxun123\\Desktop\\ioTest1.txt");
        File file1 = new File("C:\\Users\\tuzongxun123\\Desktop\\ioTest2.txt");
        // 缓冲输入流对象,bis和bos作为缓冲区,
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
        // 缓冲输出流对象
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file1));
        //声明缓冲区大小
        byte[] byte1 = new byte[1024];
        while (bis.read(byte1) != -1) {
            bos.write(byte1);
        } ;
        // 将缓冲区中的数据全部写出
        bos.flush();
        bis.close();
        bos.close();
    }

DataInputStream和DataOutputStream被称为数据输入输出流,他们因为自己的特性而常被用于网络传输,它可以保证“无论数据来自何种机器,只要使用一个DataInputStream收取这些数据,就可用本机正确的格式保存它们.“
不过现在使用spring做文件上传和下载时我自己使用的是MultipartFile,所以也就没有做DataInputStream和DataOutputStream的例子。
MultipartFile上传文件的例子可以参考:
使用springMVC实现文件上传和下载之环境配置与上传

目录
相关文章
|
3月前
|
存储 移动开发 Java
从零开始学习 Java:简单易懂的入门指南之IO字节流(三十)
从零开始学习 Java:简单易懂的入门指南之IO字节流(三十)
|
1月前
|
Java
Java文件字节流
Java文件字节流
13 0
|
1月前
|
Java
Java-.文件字节流docx
Java-.文件字节流docx
17 0
|
2月前
|
Java 索引
JAVA零基础小白免费学习教程day16-字节流&字符流(三)
JAVA零基础小白免费学习教程day16-字节流&字符流
44 0
|
2月前
|
存储 Java Windows
JAVA零基础小白免费学习教程day16-字节流&字符流(二)
JAVA零基础小白免费学习教程day16-字节流&字符流
79 0
|
2月前
|
存储 移动开发 Java
JAVA零基础小白免费学习教程day16-字节流&字符流(一)
JAVA零基础小白免费学习教程day16-字节流&字符流
51 0
|
3月前
|
缓存 Java
IO流【Java中IO的四大抽象类、常用流详解 、 缓冲字节流、 文件字符流、缓冲字符流】(二)-全面详解(学习总结---从入门到深化)
IO流【Java中IO的四大抽象类、常用流详解 、 缓冲字节流、 文件字符流、缓冲字符流】(二)-全面详解(学习总结---从入门到深化)
38 0
IO流【Java中IO的四大抽象类、常用流详解 、 缓冲字节流、 文件字符流、缓冲字符流】(二)-全面详解(学习总结---从入门到深化)
|
3月前
|
数据采集 存储 Java
JAVA BIO 字节流和字符流区别
【1月更文挑战第1天】JAVA BIO 字节流和字符流区别
|
4月前
|
Java
IO流Java字节流和字符流的区别是什么?
IO流Java字节流和字符流的区别是什么?
35 0
|
5月前
|
存储 移动开发 Java
[java进阶]——IO流基本字节流和字符流,字符流中的缓冲流,递归实现多级文件拷贝
[java进阶]——IO流基本字节流和字符流,字符流中的缓冲流,递归实现多级文件拷贝