zoukankan      html  css  js  c++  java
  • Java/IO流

    Java/IO流

     

    1、什么是IO?

     IO流就是输入输出的意思,在java中我们的程序中与程序外需要进行数据的传输的时候就需要用到IO流,流是一种抽象的概念,当程序中与程序外进行数据传输的时候,IO流就像是一条管道一样连接着程序外的数据和程序中的数据,而数据在这条管道中就像是流水一样流进程序里,或者流出程序外(这里指的程序外,一般来说是本地,或者网络上),但是值得注意的是,这条管道具有单向流通性,只能流进程序里,或者只能流出程序里。

    2、IO的用法

           1、Inputstream

               输入流:

                   从程序里和程序外建立一条管道,数据从程序外流进程序里。

             //实例化输入流对象,由于Inputstream是一个接口所以采用它的一个实现类来实例化它的对象。传进去的参数为所要读取的文件路径

    InputStream input=new FileInputStream(String name);

              //获取文件可读大小,将文件读进程序里

    byte[] bytes=new byte[input.available()];

    input.read(bytes);

     现在就将文件里的数据读进程序中的bytes数组中了,如果是文本文件的话就可以将数组里的数据构造成字符串输出查看。

    String data=new String(bytes);

    input.close();//关闭流

    System.out.println(data);

    注:读完数据记得将流关闭

    如果是其他文件,可以将文件写出程序外(本地或者网络)。下面将讲解。

              2Outputstream

                  输出流:

                     建立一条数据传输管道,数据从程序里流到程序外(本地或者网络)。

    //使用FileOutputStream实例化对象

    OutputStream output=new FileOutputStream(String NewName);

    //将程序里的数据写出本地,为方便起见,这里讲上面bytes数组里的数据写到本地。

    output.write(bytes);

    output.flush();//刷新一下,确保数据全部写完

    output.close();//关闭流

    通过IO流的使用,就可以使数据在程序里和程序外传输了。

                

     

     

    3、IO拓展

       1、DataOutputStream、DataInputStream

    数据IO流,里面有很多方法可以写各种数据的方法,可以直接写入字节,整型,字符,字符串。。。等等。这个IO是将OutputStream和InputStream里面的方法进行封装的,所以获取这两个流对象的方法需要将OutputStream和InputStream的对象作为参数才能构造出相应的数据IO流。

    下面为示例代码:

    DataOutputStream dataOutput=new DataOutputStream(output);

    dataOutput.write();

    dataOutput.writeInt();

    dataOutput.writeBoolean();

    dataOutput.writeBytes();

       2、BufferedInputStream、BufferedOutputStream

         缓存IO流,适合应用于大文件的读写,当我们用InputStream和OutputStream写一个较大文件时就会发现读写的效率会变得很低,而缓存IO流就可以将这个问题解决,大大提高我们对文件的读写效率。缓存IO流也是将InputStream和OutputStream进行封装出来的,所以先要得到它的对象是也需要将InputStream和OutputStream的对象作为参数传进去。

    下面为示例代码:

     BufferedInputStream Bufferedinput = new    BufferedInputStream( myfileInput );

    BufferedOutputStream Bufferedoutput = new BufferedOutputStream(fileOutput);

    for(int bytes = Bufferedinput.read(); bytes!=-1 ; bytes = Bufferedinput.read()){

          Bufferedoutput.write(bytes);

    }

    Bufferedoutput.flush();//记得刷新流,确保数据全部写出。

    Bufferedinput.close();//关闭流

    Bufferedoutput.close();

      

        

  • 相关阅读:
    Java实现 LeetCode 432 全 O(1) 的数据结构
    Java实现 LeetCode 432 全 O(1) 的数据结构
    Makefile 自动生成依赖
    比较详细的利用虚拟机对SD卡FAT32+EXT4+Ext4分区图解教程
    STM32F0308开发环境的选择--CooCox CoIDE篇
    linux下包管理命令yum与apt-get以及开发环境配置
    裸机编程与OS环境编程的有关思考
    Eclipse C/C++环境配置
    Linux Eclipse代码提示功能设置(Java & C/C++)
    Linux下高效编写Shell——shell特殊字符汇总
  • 原文地址:https://www.cnblogs.com/cyh328863397/p/5951108.html
Copyright © 2011-2022 走看看