IO输入输出流以及输入流和输出流的基本用法

  IO,即in和out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。

  在Java 中是通过流处理IO 的,那么什么是流?\n\n流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。

  当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。

一般来说关于流的特性有下面几点:

先进先出:最先写入输出流的数据最先被输入流读取到。

顺序存取:可以一个接一个地往流中写入一串字节,读出时也将按写入顺序读取一串字节,不能随机访问中间的数据。

只读或只写:每个流只能是输入流或输出流的一种,不能同时具备两个功能,输入流只能进行读操作,对输出流只能进行写操作。在一个数据传输通道中,如果既要写入数据,又要读取数据,则要分别提供两个流。

如图结构

综合案例

 public static void main(String[] args) throws IOException {
        //1.定义源文件和目标文件的File文件
        File f1 = new File("D:/a.jpg");
       File newFile=new File("D:/aa/newFile.jpg");

       //2.定义输入输出流关联文件
         InputStream in = new FileInputStream(f1);
        OutputStream out = new FileOutputStream(newFile);

        //3.使用输出流读取内容,然后把读取的内容写入目标文件中
        //一个一个字节进行读取
//        int n;
//        while ((n=in.read())!=-1){
//            out.write(n);
//        }
        //使用缓冲区读写
//        byte[] buffer=new byte[10];
//        while (true) {
//            int n = in.read(buffer);
//            if (n != -1) {
//                out.write(buffer,2,n);
//            } else {
//                break;
//            }
//        }
        long start=System.currentTimeMillis();
        //推荐写法
        byte[] buffer=new byte[1024];
        int n;
        while ((n=in.read(buffer))!=-1){
          out.write(buffer,0,n);
    }
       long stop=System.currentTimeMillis();
        System.out.println("耗时:"+(stop-start));
    }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值