zoukankan      html  css  js  c++  java
  • IO流总结

    IO流的作用:用于设备和设备之间的数据传输。

    IO流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。

    IO流的分类:

       按照操作数据的类型分为两种: 字节流和字符流。

       按照流的方向: 输入流和输出流。

       按流的功能不同分为:节点流和处理流。

    File类

           File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。

    1.字节流

       字节流 : 读取的是文件的二进制数据,不会对二进制做处理。
           字节流类以InputStream(字节输入流)和OutputStream(字节输出流)为顶层类。它们都是抽象类。
          FileInputStream: 是InputStream的子类。

          FileInputStream使用步骤:
        1.找到目标文件 
        2.建立通道
        3.[创建缓冲区]
        4.读取数据
        5.关闭资源

     1           //1.找目标文件
     2           File file = new File("文件路径");
     3           //2.建立通道
     4           FileInputStream fileInputStream = new FileInputStream(file);
     5           //3.创建一个缓冲区
     6           byte[] b = new byte[1024]; //理论上设置的缓冲区越大 读取的效率越高
     7           //4.读取数据
     8           int count = 0;
     9           while((count = fileInputStream.read(b))!=-1){
    10               //String里面做了解码功能
    11               System.out.println(new String(b,0,count));
    12           }
    13           //5.关闭资源
    14           fileInputStream.close();

        FileOutputStream: 是OutputStream的子类。 

      FileOutputStream使用步骤:
        1.找到目标文件 
        2.建立通道
        3.[创建缓冲区]
        4.写入数据
        5.关闭资源

         FileOutputStream使用的注意点:

        1.使用FileOutputStream写数据的时候,如果目标文件不存在,那么就会自己创建一个目标文件对象。

        2.使用FileOutputStream写数据的时候,如果目标文件存在,先将里面的数据清空,在写入数据。
        3.使用FileOutputStream写数据的时候,如果目标文件存在,想将数据在原有的基础上追加,这个时候就应该使用FileOutputStream(File file, boolean append) 构造方法, append如果为true表示可以追加数据,反之不信。
        4..使用FileOutputStream写数据的时候,用write(int a)方法写数据,虽然接收的是int ,但实际上只有一个字节的数据,操作的是低八位的二进制 ,其他的24位全部丢掉。

     1         //1.找目标文件
     2         File file = new File(文件路径);    
     3         //2.创建一个通道
     4         FileOutputStream outputStream = new FileOutputStream(file,true); 
     5         //3.创键一个字节数组
     6         String str = "hello word";
     7         //将字符串变为字节数组
     8         byte[] b = str.getBytes();
     9     
    10         //4.写入数据
    11         outputStream.write(b);    
    12         //5.关闭资源
    13         outputStream.close();        

    2.字符流 :

          字符流 :读的也是二进制文件,他会帮我们解码成我们看的懂的字符。

      字符流 = 字节流 + 解码。

          字符流分为:字符输入流和字符输出流。

          使用字符输出流时记得关闭资源或刷新数据,否则写入的数据不存在。

     1         //1.找目标文件
     2         File file = new File(文件路径);
     3         //2.建立通道
     4         FileWriter fileWriter = new FileWriter(file,true); //在文件后面继续追加数据
     5         //3.写入数据
     6         fileWriter.write("好好学习java");
     7         //刷新
     8         fileWriter.flush();
     9         //4.关闭数据
    10         //fileWriter.close();        

     字节流与字符流的区别:

       1.byte与char的区别,字节流使用的是 byte;

           2.字节流时采用二进制的编码直接传输,用字符流则牵涉到本地系统的编码问题;

           3.字节流按照8位传输,字符流按照16位传输,所以字符流可以读取中文。                       

     

    3.对象输入输出流 : ObjectInputStream、ObjectOutoutStream           

          使用注意点 :
               1.想要通过对象流读取或者写入对象到磁盘,需要使对象的所属类来实现Serializable接口 ,Serializable接口 没有方法只是作为哟个标记。
               2.当我改变类中的属性值,任然可以读取数据 ,需要设置serialVersionUID 为一个常量 :private static final long serialVersionUID = 1L;
               3.如果我不想将某个属性写入到磁盘 可以在用transient关键字来修饰。

  • 相关阅读:
    #Quiz(ra992_110510) Jun
    About Invertible Matrices Jun
    RadonNikodym定理“推广”(Ex 2.12.2) Jun
    Basic Notes for Matrices Jun
    恋爱侧面观 Jun
    ViewHolder的改进写法
    Android高手速成第二部分 工具库
    网页下拉列表实现多选
    Android高手速成第四部分 开发工具及测试工具
    Android高手速成第三部分 优秀项目
  • 原文地址:https://www.cnblogs.com/chenrenshui/p/6164120.html
Copyright © 2011-2022 走看看