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

     

     

     

     

     

     

     

  • 相关阅读:
    mysql 历史版本下载
    mysql 5.7 版本 You must reset your password using ALTER USER statement before executing this statement报错处理
    5.7 zip 版本的安装 以及遇到的坑
    mysql 5.6zip版本的卸载与5.7 zip 版本的安装
    mysql数据库的备份与还原
    本地Navicat连接docker里的mysql
    docker修改数据库密码
    docker 在push镜像到本地registry出现的500 Internal Server Error
    linux 没有界面内容显示不全解决办法
    json与map互相转换
  • 原文地址:https://www.cnblogs.com/qq1005801715/p/10455434.html
Copyright © 2011-2022 走看看