Java基础复习---IO流

忘记的知识点:FileOutputStream(File file,boolean append),拼接输出

                             流是单方向的,数据只能以从头到尾的顺序流动一次。输入的时候

                              int i ;while((i = (s.read())) != -1){ read() 读不到数据输出-1}

一、概念

I/O 即输入Input/ 输出Output的缩写,其实就是计算机调度把各个存储中(包括内存和外部存储)的数据写入写出的过程;java中用“流(stream)”来抽象表示这么一个写入写出的功能,封装成一个“类”,都放在java.io这个包里面。

二、什么是流

通过“流”的形式允许java程序使用相同的方式来访问不同的输入/输出源。stream是从起(source)到接收的(sink)的有序数据。我们这里把输入/输出源对比成“水桶”,那么流就是“管道”,这个“管道”的粗细、单向性等属性也就是区分了不同“流”的特性。

tips:流是单方向的,数据只能以从头到尾的顺序流动一次。

三、流的分类

1、根据传输处理的单位:字节流 字符流

2、根据流的方向:输入流 输出流

字符输入流:Reader(抽象父类无法实例化)

高效字符输入流:BufferedReader

                      实例化使用BufferedReader(new FileReader ( new File( "路径" ) ) )

字符输出流:Writer(抽象父类无法实例化)

高效字符输出流:BufferedWriter

                      实例化使用BufferedWriter(new FileWriter ( new File( "路径" ) ) )

字节输入流:InputStream(抽象父类无法实例化)

高效字节输入流:BufferedIputStream

                      实例化使用BufferedIputStream(new FileInputStream ( new File( "路径" ) ) )

字节输出流:OutputStream(抽象父类无法实例化)

高效字节输出流:BufferedOutputStream

                       实例化使用BufferedOutputStream(new FileOutputStream ( new File( "路径" ) ) )

package cn.tedu;

import java.io.*;

/**本类用于复习IO流*/
public class ReviewIO {
    public static void main(String[] args) {
//        method1();//测试字符输入流
//        method2();//测试字符输出流
//        method3();//测试字节输入流
        method4();//测试字节输入流

    }

    private static void method4() {
        BufferedOutputStream bo = null;
        try{
            bo = new BufferedOutputStream(new FileOutputStream("D:\\a\\1.txt",true));
            bo.write(1);
            bo.write(1);
            bo.write(1);
        }catch(Exception e){
            System.out.println("输出失败");
        }finally {
            try {
                bo.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private static void method3() {
        BufferedInputStream bi = null;
        try{
            bi = new BufferedInputStream(new FileInputStream("D:\\a\\1.txt"));
            int j;
            while ((j =(bi.read())) != -1){
                System.out.println(j);
            }
        }catch(Exception e){
            System.out.println("输出失败");
        }finally {
            try {
                bi.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private static void method2() {
        BufferedWriter bW = null;
        try{
            bW = new BufferedWriter(new FileWriter("d:\\a\\2.txt",true));
            bW.write("你");
            bW.write("好");
            bW.write("吗");
        }catch (Exception e){
            System.out.println("输出失败");
        }finally {
            try {
                bW.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private static void method1(){
        BufferedReader bR = null;
       try {
           bR = new BufferedReader(new FileReader("d:\\a\\1.txt"));
           int i ;
           while((i = bR.read())!= -1){
               System.out.println(i);
           }
       }catch (Exception e){
           System.out.println("输入失败");
       }finally {
           try {
               bR.close();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
    }

}

四、案例

package cn.tedu;

import java.io.*;

/**本类用于IO流文件复制案例*/
public class ReviewIO02 {
    public static void main(String[] args) {
        method();
    }

    private static void method() {
        BufferedInputStream input = null;
        BufferedOutputStream output = null;
        try{
            input = new BufferedInputStream(new FileInputStream("D:\\a\\m.jpg"));
            output = new BufferedOutputStream(new FileOutputStream("D:\\a\\b\\m.jpg",true));
            int i;
            while ((i = (input.read())) != -1){
                output.write(i);
            }
            System.out.println("复制成功");
        }catch(Exception e){
            System.out.println("复制失败");
        }finally {
            try {
                output.close();
                input.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊渊啊渊.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值