I/O

IO概念

  1. I/O: Input/Output,输入、输出
  2. stream:流,数据流,数据传输、通信的通道
  3. Java应用程序中,“流”是基本的传输数据的方式。JDK提供了各种“”流”来操作数据。

InputStream抽象类
字节输入流:继承自InputStream的流都是输入流,用于向程序中输入数据,且数据的单位为字节
InputStream
1. FileInputStream
2. StringBufferInputStream
3. AudioInputStream
4. ByteArrayInputStream
5. PipedInputStream
6. FilterInputStream ——->BufferedInputStream
7. ObjectInputStream
8. SequenceInputStream

InputStream常用法
public abstract int read() throws IOException
从输入流中读取数据的下一个字节,返回读到的字节值,若达到流的末尾,返回-1
public int read(byte[] b) throws IOException
从输入流中读取b.length个字节的数据,并存取到缓冲区数组b中,返回实际读到的字节总数
public int read (byte[] b , int off , int len )throws IOException
读取len个字节的数据,并从数组b的off位置开始写入到该数组中
public void close () throws IOException
关闭此输入流并释放与此流关联的所有系统资源

FileInputStream类
该类是字节输入流InputStream的常用实现类,构造方法如下:
public FileInputStream(File file)
根据一个file实例来创建FileInputStream对象
public FileInputStream(String name)
根据文件名称来创建FileInputStream对象

OutputStream抽象类
字节输出流:继承自OutputStream的流都是输出流,用于程序向外输出数据,且数据的单位为字节
OutputStream

1.FileOutputStream
2.ByteArrayOutputStream
3.PipedOutputStream
4. FilterOutputStream ———–>BufferedOutputStream
5. ObjectOutputStream

OutputStream常用方法
public abstract void write(int b) throws IOException
将指定的字节写入此输出流
public void write(byte[] b) throws IOException
将 b.length 个字节从指定的 byte 数组写入此输出流
public void write(byte[] b, int off, int len) throws IOException
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流
public void flush() throws IOException
刷新此输出流并强制写出所有缓冲的输出字节
pulbic void close() throws IOException
关闭此输出流并释放与此流有关的所有系统资源(含刷新操作)

缓冲流
缓冲流是处理流(过滤流,高级流)的一种,建立在相应的节点流之上,对读写数据提供了缓冲功能,提高了效率,此外,还增加了一些方便的方法。

**JDK提供2种缓冲流:字节缓冲流,字符缓冲流**
1.BufferedInputStream:对InputStream流进行包装
2.BufferedOutputStream:对OutputStream流进行包装
3.BufferedReader:对Reader流进行包装
4.增加readLine()方法,用于一次读取一行字符串
5.BufferedWriter:对Writer流进行包装
6.增加newLine()方法,用于写出一个行分隔符

注意:
缓冲输出流,要写出的数据会先缓存在内存缓冲区中,关闭此流前可以用flush()方法将缓存区的数据立刻写出。关闭处理流时,会自动关闭处理流所包装的底层流。

字节缓冲流
BufferedInputStream:对InputStream流进行包装
BufferedOutputStream:对OutputStream流进行包装

对字节缓冲流而言,除了使用缓冲区提高效率之外,并没有额外增加方法,和FileInputStream,FileOutputStream用法类似

public static void method4(){

        try {
            FileInputStream inputStream = new FileInputStream("E:/学习.txt");
            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
            FileOutputStream outputStream = new FileOutputStream("D:/zz.txt");
            BufferedOutputStream bufferedOutputStream  = new BufferedOutputStream(outputStream);

           byte[] bytes = new byte[15];
           inputStream.read(bytes);
           int length = 0;
           while((length=bufferedInputStream.read(bytes))!=-1){

               bufferedOutputStream.write(bytes,0,length);
           }
               bufferedOutputStream.flush();
               bufferedOutputStream.close();
               outputStream.close();
               bufferedInputStream.close();
               inputStream.close();


        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
  public static void method2(){
          try {
            FileReader fileReader = new FileReader("E:/学习.txt");
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            String messege = "";
            while((messege=bufferedReader.readLine())!=null){
                System.out.println(messege);
            }
            fileReader.close();
            bufferedReader.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

      }
public static void method3(){
          String msg ="好好学习";
          try {
            FileWriter  fileWriter = new FileWriter("E:/学习.txt");
            BufferedWriter  bufferedWriter = new BufferedWriter(fileWriter);
            bufferedWriter.write(msg);
            bufferedWriter.newLine();
            bufferedWriter.write("天天向上");
            bufferedWriter.flush();
            fileWriter.close();
            bufferedWriter.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值