Java学习之IO流对象的选择

java IO有很多的对象,有时用的时候不知道到底应该用那个,或者说用哪个的效率更高。今天通过学习总结了一下如何选用Java IO流对象的方法
常用的IO流对象
现根据输入输出分个组
常用输入流
FileReader,BufferedReader,FileInputStream,BufferedInputStream,InputStreamReader
常用输出流
FileWriter,BufferedWriter,FileOutputStream,BufferedOutputStream,OutputStreamWriter
可以看到,上面写的输入流和输出流按顺序是一一对应的,现在来分析在操作数据是怎样选择正确的流对象。

  1. 如果是操作纯文本数据:尽量选择字符流Reader和Writer的子类,不过一般最好用带有缓冲区的BufferedReader和BufferedWriter,当操作的数据已经编程字节流对象时,可以用InputStreamReader和InputStreamWriter两个转换流将字节流转换成字符流,代码示例:
    BufferedReader bfr = new BufferedReader(new InputStreamReader(new BufferedInputStream(new File(“文件路径”))));
    BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(new BufferedOutputStream(new File(“文件路径”))));
    总结:只要是操作纯文本数据,就尽量将其转换为字符流对象操作,并且尽量使用待缓冲区的字符流对象,这样能保证其操作数据的高效性
  2. 如果是操作飞纯文本数据:这时候只能选择字节流,因为字符流操作非纯文本数据会出现乱码等现象。字节流也建议使用带有缓冲区的对象,提高效率

  3. 学习的代码

package javaIO;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import org.junit.Test;

public class InputStreamOutputStream {

    @Test
    public void InputStreamAndOutputStream() throws IOException
    {
        FileInputStream input = new FileInputStream(new File("G:\\1.txt"));
        FileOutputStream output = new FileOutputStream(new File("G:\\4.txt"),true);

//      System.out.println(input.available());
        byte[] ch = new byte[1024];
        int len;
        while((len = input.read(ch)) != -1)
        {
            output.write(ch,0,len);
            output.flush();
//          System.out.println(new String(ch,0,len));
        }
        input.close();
        output.close();
    }

    @Test
    public void BufferedInputStreamAndBufferedOutputStream() throws IOException
    {
        BufferedInputStream bfis = new BufferedInputStream(new FileInputStream(new File("G:\\1.txt")));
        BufferedOutputStream bfos = new BufferedOutputStream(new FileOutputStream(new File("G:\\5.txt")));
        BufferedReader bfr = new BufferedReader(new InputStreamReader(bfis));
        BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(bfos));

//      int b;
        String line;
        while((line = bfr.readLine()) != null)
        {
            bfw.write(line);
            bfw.newLine();
        }
//      bfis.close();
//      bfos.close();
        bfr.close();
        bfw.close();    
    }   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值