zoukankan      html  css  js  c++  java
  • 2019/3/1 IO流的学习总结

    Java学习之IO

    学习Io流之前,我们先了解文件,以及在Java中对文件的操作。首先对文件进行操作,就必须用 File F = new File(“d:\文件名”); 表示该文件或文件夹的地址寻找或者创建(这个语句一般被认为对已经存在的文件用File对象进行绑定,但实际上如果不存在,还会创建,语法是 File F = new File(“文件路径”,”文件名”);这样,就可以完成对文件的创建);无论是对文件的操作还是Io流的使用,第一步必须是这个!以下是对文件的一般操作:

    基础操作:

    1. 判断文件是否存在:  F.exists();  其值为 true or false
    2. 判断是否是文件夹:  F.isDirectory(); 其值为 true or false
    3. 判断是否是文件: F.isFile() ; 其值为 true or false
    4. 获取文件的长度:   F.length();  其返回格式为 long 型(一般需要强制转换为int)
    5. 获取文件的最后修改时间: F.lastModified();  其返回long型整数,以作为创建一个时间对象的参数
    6. 给文件重命名: F.rename(F2); F指向的文件会被重命名,名字是F2指向的文件的名字

    进阶操作:

    1. 以字符串数组的形式,返回当前文件夹下的所有文件(不包含子文件):F.list(); String Str[] = F.list; 再依次输出Str的内容,会得到当前文件夹下所有文件的名字。
    2. 以文件数组的形式,返回当前文件夹下的所有文件:File FF[] = F.listFile();FF[]会包含其下所有文件。
    3. 以字符串形式返回当前所在文件夹: F.getParent();
    4. 以文件形式返回当前所在文件夹:  F.getParentFile();
    5. 删除文件:  F.delete();
    6. Jvm结束时删除文件: F.deleteOnExit();

    以上是对文件的各种操作。

    在学习完文件的操作之后,开始学习IO流。

    首先先明白几个流的关系,以下是关系图:

     

    首先学习字节流以及子流:

    -------------------------------------------------------------------------------

    字节流:

    首先 创建文件对象:File F = new File(“d:\文件名”);

    其次 创建读取字节流对象 FileInputStream Fin = new FileInputStream(F);以及输出字节流对象 FileOutputStream Fou = new FileOutputStream(F);

    字节流的读取以及输出方法:

    首先创建字节数组:byte BB = new byte[(int)F.length()];

    读取:Fin.read(BB);(读取的内容存在BB数组上)

    输出:Fou.write(BB);(BB数组上的内容输出在F所指向文件上!

     

    字节流下的数据流:(数据流原则:必须先写后读!)

    关键字:DataOutputStream;DataInputStream;

    为什么用数据流:

    因为使用它可以进行数据的格式化顺序读写,有效提高效率!

    在使用数据流之前,需要创建字节流:

    FileInputStream Fin = new FileInputStream(F);

    FileOutputStream Fou = new FileOutputStream(F);

    再利用字节流创建数据流:

    DataOutputStream Dou = new DataOutputStream(Fou);

    DataInputStream Din = new DataInputStream(Fin);

    数据流的使用方法:

    字符串的写读: Dou.writeUTF(Str);Str = Din.readUTF();

    整数的写读:Dou.writeInt(int a ); int a = Din.readInt();

    布尔值的写读: Dou.writeBoolean(Boolean B);Boolean B =  Din.readBoolean();

    等等。

     

    字节流下的对象流:

    使用对象流来操作的这个对象,其所属类必须实现了Serializable接口;

    也就是说:class 类名 implements Serializable{};

    在使用对象流之前,需要创建字节流:

    FileInputStream Fin = new FileInputStream(F);

    FileOutputStream Fou = new FileOutputStream(F);

    再利用字节流创建对象流:

    ObjectOutputStream Oou = new ObjectOutputStream(Fou);

    ObjectInputStream Oin = new ObjectInputStream(Fin);

    对象流的使用方法:

    写入对象:Oou.writeObject(Hreo H);

    读取对象:Hero h =(Hero) Oin .readObject();

    Ps:     对象流也会顺序读写

    ----------------------------------------------------------------------------------------------------------------------------

    以下是字符流的内容:

    老样子,先 File F = new File(“d:\文件名”);

    再: FileReader FR = new FileReader( F );

         FileWriter FW = new FileWriter(F);

    方法:

    char c = new c[100];  FR.read( c ); 读取字符到c数组中去

    FW.write( c );  c数组的内容写到F指向文件中去

    字符流下的缓存流:

    在使用缓存流之前,需要创建字符流:

     FileReader FR = new FileReader( F );

     FileWriter FW = new FileWriter(F);

    再利用字符流创建缓存流:

    BufferedReader BR = new BufferedReader(FR);

    PrintWriter PW = new PrintWriter(FW);

    使用方法:

    String Str = BR.readLine();

    //这个方法会一直读,每次读一行,直到读完Str 为空为止

    PW.println(Str);

    //这是一整个数据读入

    立即把数据写入硬盘: PW.flush();

    2019/3/1

     

     

     

     

     

     

     

  • 相关阅读:
    NodeJS系列~第一个小例子,实现了request.querystring功能
    JS~js里实现队列与堆栈
    最新CSS兼容方案
    js传真实地址 C:fakepath
    IE11的变化 navigator.userAgent中不再包含“MSIE”关键字
    看看该死的jquery.form.js的用法,不是个东西
    bootstrap模态框怎么传递参数
    方法的直接调用,反射调用
    IIS 7.5 配置伪静态
    TrippleDESCSPEncrypt 加密解密试试看
  • 原文地址:https://www.cnblogs.com/qq1005801715/p/10455434.html
Copyright © 2011-2022 走看看