JAVA IO 流小结

字节流(InputStream,OutputStream)

字符流(Writer,Reader)

如是要复制一个文件,这个文件是一个文本文件话,则可以采用字符流各字节流都可以,否则只能用字节流,字节流复制文件常用的四种方式,

/*
    方式一:一次读一个字节
*
private static void Method1() throws IOException {
        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");
        FileInputStream fis = new FileInputStream(file);
        FileOutputStream fos  = new FileOutputStream("d:\\des.txt");

        int i = 0;
        while((i = fis.read()) != -1){
            fos.write(i);
        }

        fis.close();
        fos.close();
    }
/**
     * 方式二:一次读写一个字节数组
     * @throws Exception 
     */
    private static void Method2() throws Exception {
        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");
        FileInputStream fis = new FileInputStream(file);
        FileOutputStream fos  = new FileOutputStream("d:\\des.txt");

        byte bytes[] = new byte[1024];
        int len = 0;

        while((len = fis.read(bytes)) != -1){
            fos.write(bytes, 0, len);
        }
        fis.close();
        fos.close();
    }
/**方式三:
     * 使用BufferedInputStream和BufferedOutputStream  一次读写取一个字节
     * @throws Exception
     */
    private static void Method3() throws Exception {
        // TODO Auto-generated method stub
        File file  = new File("d:\\src.txt");
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:\\des.txt"));
        int i = 0;
        while((i=bis.read()) != -1){
            bos.write(i);
        }

        bos.flush();
        bis.close();
        bos.close();
    }
    /**
     * 方式四: 使用BufferedInputream 和 BufferedOutputStream 一次读写一个字节数组
     * @throws Exception
     */
    private static void Method4() throws Exception {
        // TODO Auto-generated method stub
        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:\\des.txt"));
        int len = 0;
        byte bytes[] = new byte[1024];
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes,0,len);
        }

        bos.flush();
        bis.close();
        bos.close();
    }

以上就是字节流复制这件的四种方式


而使用字符流来复制这个文本文件的话,则有五种方式:


    /**
     * 方式一:使用FileRead 和 FileWriter 一次读写一个字符
     * @throws Exception
     */
    private static void Method1() throws Exception {
        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");

        FileWriter fw = new FileWriter("d:\\des.txt");
        FileReader fr = new FileReader(file);

        int i;
        while((i = fr.read()) != -1){
            fw.write(i);
        }
        fw.close();
        fr.close();
    }
    /**
     * 方式三使用 BufferedReader 和  BufferedWriter (缓存技术) 一次读写一个字符
     * @throws Exception
     */
    private static void Method3() throws Exception {
        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");
        BufferedReader br = new BufferedReader(new FileReader(file)); 
        BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\des.txt"));

        int i = 0;
        while((i = br.read()) != -1){
            bw.write(i);
        }
        bw.flush();
        br.close();
        bw.close();
    }
    /**
     * 方式四使用 BufferedReader 和  BufferedWriter (缓存技术) 一次读写一个字符数组
     * @throws Exception
     */
    private static void Method4() throws Exception {
        // TODO Auto-generated method stub

        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");
        BufferedReader br = new BufferedReader(new FileReader(file)); 
        BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\des.txt"));

        int len=0;
        char c[] = new char[1024];
        while((len = br.read(c)) != -1){
            bw.write(c, 0, len);
        }
        bw.flush();
        br.close();
        bw.close();
    }
    /**
     * 方式五使用 BufferedReader 和  BufferedWriter (缓存技术) 一次读写一行(以\r结末)数据
     * @throws Exception
     */
    private static void Method5() throws Exception {
        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");
        BufferedReader br = new BufferedReader(new FileReader(file)); 
        BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\des.txt"));

        String str="";
        while((str = br.readLine()) != null){
            bw.write(str);;
            bw.newLine();
        }
        bw.flush();
        br.close();
        bw.close();

数据操作流:

DataInputStream /DataOutputStream


内存操作流:

ByteArrayInputStream

CharArrayInputStream

StringReader/StringWriter


和并流:
SequenceInputStream


序列化流:
ObjectInputStream


Properties

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值