首页 > 编程语言 > 详细

JAVA学习笔记(二十九) - 缓冲流 BufferedInputStream &BufferedOutputStream

时间:2015-03-27 14:55:48      阅读:241      评论:0      收藏:0      [点我收藏+]

BufferedInputStream和BufferedOutputStream

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;

/*
 * BufferedInputStream和BufferedOutputStream,为输入输出流添加缓冲
 */
public class Test10 {
    public static void main(String[] args) throws IOException {
        test2();
    }

    public static void test1() throws IOException {
        // 定义文件输入输出流
        FileInputStream fis = new FileInputStream("D:\\Java\\hello.txt");
        FileOutputStream fos = new FileOutputStream("D:\\Java\\world.txt");
        // 为流添加缓冲
        BufferedInputStream bis = new BufferedInputStream(fis);
        BufferedOutputStream bos = new BufferedOutputStream(fos, 1024);
        int data = bis.read();
        while (data != -1) {
            System.out.println((char) data);
            bos.write(data);
            data = bis.read();
        }
        bos.flush();
        bos.close();
        bis.close();
        fos.close();
        fis.close();
    }

    public static void test2() throws IOException {
        // 定义一个文件输出流
        FileOutputStream fos = new FileOutputStream("D:\\Java\\itany.txt");
        // 为文件输出流添加缓冲
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        bos.write("欢迎来到南京网博!".getBytes());
        bos.flush();
        fos.close();
        bos.close();
        System.out.println("写入文件成功!");

        /*
         * 字符的编码和解码
         * gbk:一个汉字占两个字节
         * utf-8:一个汉字占三个字节
         */
        String str="欢迎来到Java世界!";
        System.out.println("原数据:"+str);

        //编码:将字符串转换为字节数组
        byte[] buffer=str.getBytes("gbk");//使用utf-8进行编码
        System.out.println("字节数组:"+Arrays.toString(buffer));
        System.out.println("数组长度:"+buffer.length);

        //解码:将字节数组转换为字符串
        String str2=new String(buffer, "gbk");
        System.out.println("解码后的数据:"+str2);
    }
}

FileInputStream、FileOutputStream和BufferedInputStream、BufferedOutputStream性能对比


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/*
 * FileInputStream、FileOutputStream和BufferedInputStream、BufferedOutputStream性能对比
 * 
 * 每次读取一个字节时由于FileInputStream每次都从硬盘读取数据,所以效率很低
 * 但如果FileInputStream读取数据时使用字节数据作为缓冲,则效率也会较高
 * 注:建议使用BufferedInputStream、BufferedOutputStream
 */
public class Test11 {
    public static void main(String[] args) throws IOException {
        File src=new File("D:\\Java\\site-1.6.5.zip");
        File dest=new File("D:\\Java\\backup.zip");

        long time1=System.currentTimeMillis();
        copy1(src, dest);
        long time2=System.currentTimeMillis();
        System.out.println("使用FileInputStream花费的时间:"+(time2-time1));

        long time3=System.currentTimeMillis();
        copy2(src, dest);
        long time4=System.currentTimeMillis();
        System.out.println("使用BufferedInputStream花费的时间:"+(time4-time3));
    }

    // 使用FileInputStream、FileOutputStream复制文件
    public static void copy1(File src, File dest) throws IOException {
        FileInputStream fis = new FileInputStream(src);
        FileOutputStream fos = new FileOutputStream(dest);
        int data = fis.read();
        while (data != -1) {
            fos.write(data);
            data = fis.read();
        }
        fos.flush();
        fos.close();
        fis.close();
    }

    // 使用BufferedInputStream、BufferedOutputStream复制文件
    public static void copy2(File src, File dest) throws IOException {
        FileInputStream fis = new FileInputStream(src);
        FileOutputStream fos = new FileOutputStream(dest);
        BufferedInputStream bis = new BufferedInputStream(fis);
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        int data = bis.read();
        while (data != -1) {
            bos.write(data);
            data = bis.read();
        }
        bos.flush();
        bos.close();
        bis.close();
    }
}

JAVA学习笔记(二十九) - 缓冲流 BufferedInputStream &BufferedOutputStream

原文:http://blog.csdn.net/wangzi11322/article/details/44674921

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!