• IO流的总结


    一、流的分类

      1、按功能分

      读取流:InputStream Reader

      写出流:OutPutStream Writer

      2、按流的类型分类

      字节流:InputStream OutputStream

      字符流:Reader Writer

    二、流功能分析

      读取流是从输入设备或数据对象中读取数据到程序,用程序进行处理读入的数据,写出流是把程序处理的数据输出到

      输出设备上比如硬盘和控制台。

      字节流读取和写入的数据单位是字节,可以读取和写入任何类型的数据。字符流读取跟写入的数据单位是字符,只能

      读取和写入文本类型的数据。当需要读取或写入文本型的数据时要用字符流,因为它会比字节流读写字符更方便和高效,相反当数

      据不是文本型时只能用字节流来读取跟写入。

    三、流中读写方法的示例。(当用到IO流时就有可能出现IO异常,所以需要处理可能的异常)

      字节流:

      FileOutputStream fos = new FileOutputStream("D:/xxx.xxx");

      fos.write("dsfdsf".getBytes());//写入字节数组

      fos.close(); //用完后需要关闭流,释放资源。字节流不需要Flush

      FileInputStream fis = new FileInputStream("D:/xxx.xxx");

      fis.read(); //读取一个字节

      fis.close();

      字符流:

      FileWriter fw = new FileWriter("D:\xxx.txt");

      fw.write("sdfsdfsdf");//可以直接写入字符串

      fw.flush(); //写完后需要Flush,才能真正写道输出设备

      fw.close(); //close()时也会Flush.

      FileReader fr = new FileReader("D:\xxx.txt");

      fr.read(char[] ch);//可以读取一个字符数组的内容

      fr.close();

    四、转换流

      当需要流之间的转换时会用到转换流。

      1、把字节读取流转换成字符读取流

      InputStreamReader isr = new InputStreamReader(new FileInputStream("xxx.xxx"));

      2、把字符输出流转化成字节输出流

      OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("xx.xxx"));

    五、缓冲流

      需要提高流的读写效率时会用到缓冲流

      1、字节缓冲流

      BufferedInputStream bis = new BufferedInputStream(new FileInputStream("xx"));

      BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("xx"));

      2、字符缓冲流

      BufferedReader br = new BufferedReader(new FileReader("xx.txt"));

      BufferedWriter bw = new BufferedWriter(new FileWriter("xx.txt"));

      缓冲流对读写功能进行了增强,而且使用缓冲技术提高了读写效率,所以当需要提高程序的读写效率时要使用缓冲流。

    六、File类的使用

      1、创建

      boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false.

      和输出流不一样,输出流对象已建立创建文件。而且文件已经存在,会覆盖。

      boolean mkdir()创建文件夹

      boolean mkdirs() 创建多级文件夹

      2、删除。

      boolean delete();删除失败时返回false.如果文件正在被使用,则删除不了返回false.

      void deleteOnExit();在程序退出时删除指定文件。

      3、判断

      boolean exists();文件是否存在。

      isFile():是不是文件

      isDirectory();是不是文件夹

      isHidden();是不是隐藏文件

      isAbsolute();是不是绝对路径

      4、获取信息

      getName();文件名

      getPath();文件路径

      getParent();上一层路径

      getAbsolutePath();绝对路径

    七、序列化和反序列化

      1.序列化的步骤:

      实现Serializable接口

      创建对象输出流

      调用writeObject()方法将对象写入文件

      关闭对象输出流

      2.反序列化的步骤:

      实现Serializable接口

      创建对象输入流

      调用readObject()方法将对象写入文件

      关闭对象输入流

  • 相关阅读:
    QT内置的ICON资源
    Spark源代码阅读笔记之MetadataCleaner
    Android API Guides---Bluetooth
    做一个WINDOWS下破解WIFI。不须要Linux抓包!
    CPU GPU设计工作原理《转》
    杭电 1280 前m大的数
    机房收费系统——报表(2)
    概览C++之const
    Android动态禁用或开启屏幕旋转工具
    shrink-to-fit(自适应宽度)
  • 原文地址:https://www.cnblogs.com/shqnl/p/11012139.html
Copyright © 2020-2023  润新知