zoukankan      html  css  js  c++  java
  • java基础 之IO流随笔

        java之IO流

    FileWriter是一个字符输出流,作用是向文件中写入数据
    1.导包
    import java.io.FileWriter;
    2.创建
    类名 对象名 = new 类名(参数);
    FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象。
    fileName是一个文件路径,比如:E:\data.txt
    举例:
    FileWriter fw = new FileWriter("E:\data.txt");
    注意,创建FileWriter对象完成的3个操作:
    (1)根据路径,寻找文件,如果不存在,直接创建新的文件
    (2)创建FileWriter对象
    (3)将FileWtier对象和文件相关联
    3.使用
    成员方法
    void write(String str) 将字符串str写入到文件对应的内存中
    void flush() 刷新该流的缓冲,把内存缓冲区中的数据刷新到文件中。
    void close() 关闭此流,但要先刷新它
    4.使用FileWriter的步骤
    (1)创建FileWriter对象,并和文件相关联
    (2)调用write方法,向文件中写入数据
    (3)执行flush操作
    (4)关闭流,释放资源,close方法
    5.注意,过程:
    Java程序--->JVM--->OS(操作系统)--->硬盘

    路径问题
    1.绝对路径:指的是从盘符根路径开始,一直写到文件名,中间的每个具体的路径都要有
    2.相对路径:指的是相对于项目的根路径,直接写文件名即可

    关闭和刷新方法的区别
    1.flush:是将文件内存中的数据,刷新到文件中,调用flush方法后,可以继续向文件中写入数据
    2.close:执行close方法后,不能继续写入数据,否则报错:Stream closed
    执行close方法,该方法内部会先执行flush,将数据写入到文件,再关闭流


    写数据的5个方法
    1.void write(String str):写一个字符串数据
    2.void write(String str,int index,int len):写一个字符串中的一部分数据, index:开始索引,len:写几个
    3.void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。'a',97
    4.void write(char[] chs):写一个字符数组数据
    5.void write(char[] chs,int index,int len):写一个字符数组的一部分数据, index:开始索引,len:写几个


    换行写入
    换行也是一个字符,不同的操作系统中,有所不同
    1.在window中,换行用:
    2.Linux系统中,换行:
    3.maxOS系统中,换行:


    FileWriter追加写入
    要实现追加写入,需要看FileWriter类的构造方法
    1.FileWriter(String fileName, boolean append)
    构造放中参数的作用:
    第一个参数:写入文件的目的地
    第二个参数:append作用
    true:可以续写,在文件的末尾处继续追加写入
    false:不能续写,覆盖之前的文件
    2.FileWriter(String fileName) :没有写第二个参数,相当于第二个参数为false,表示的是覆盖写入(重新写入)


    FileReader是一个字符输入流(文件字符输入流),作用是从文件中读取数据
    1.导包
    java.io.FileReader;
    2.创建:
    构造方法
    FileReader(String fileName) 传递要读取的文件名称,文件名既可以是一个绝对路径,又可以是一个相对路径
    举例:
    FileReader fr = new FileReader("E:\data.txt");
    注意,创建FileReader对象,完成3件事:
    (1)根据路径,寻找文件,如果不存在,直接报错
    (2)创建一个FileReader对象
    (3)将FileReader对象和文件相关联
    3.使用
    成员方法
    int read() 读取单个字符并返回,如果返回值为-1,说明文件结束了,不用再读了
    int read(char[] cbuf) 一次读取一个字符数组的数据,返回的是实际读取的字符个数
    4.FileReader的使用步骤
    (1)创建文件字符输入流FileReader对象fr,并和文件相关联
    (2)调用read方法读取数据
    (3)关闭流资源
    5.注意,过程:
    Java程序<---JVM<---OS(操作系统)<---硬盘


    读取字符数组
    int read(char[] cbuf) 一次读取一个字符数组的数据,返回的是实际读取的字符个数
    如果返回值为-1,说明文件结束了,不用再读取了


    BufferedWriter也是一个字符输出流,用法和FileWriter差不多,但是比FileWriter提供了更为强大的功能
    底层定义了一个长度为8192的字符数组,作为缓冲
    1.创建:
    (1).先创建一个普通的FileWriter对象
    FileWriter fw = new FileWriter("E:\data.txt");
    (2).再将FileWriter对象包装成BufferedWriter对象
    BufferedWriter bw = new BufferedWriter(fw);
    2.使用:
    通过构造方法,发现,BufferedWriter最终也是通过FileWriter来操作文件的,所以FileWriter具备的方法,
    BufferedWriter都具有
    3.注意:
    (1)不建议调用flush方法,因为缓冲区满了后,会自动刷新
    (2)只需要关闭BufferedWriter,不需要关闭FileWriter

    写一个换行符
    void newLine():写一个换行符,这个换行符由系统决定,写入一个自适应系统的换行符


    BufferedReader也是一个字符输入流,用法和FileReader差不多,但是比FileReader提供了更为强大的功能
    底层定义了一个长度为8192的字符数组,作为缓冲
    1.创建:
    (1).先创建一个普通的FileReader对象
    FileReader fr = new FileReader("E:\data.txt");
    (2).再将FileReader对象包装成BufferedReader对象
    BufferedReader br = new BufferedReader(fr);
    2.使用:
    通过构造方法,发现,BufferedReader最终也是通过FileReader来操作文件的,所以FileReader具备的方法,
    BufferedReader都具有
    3.注意:
    (1)不建议调用flush方法,因为缓冲区满了后,会自动刷新
    (2)只需要关闭BufferedReader,不需要关闭FileReader

    使用BufferedReader一次读取一行内容
    String readLine():一次读取一行数据,但是不读取换行符,如果读取结束,返回的是null

  • 相关阅读:
    Mybatis resultMap和resultType的区别
    根据xml文件生成javaBean
    WebService如何封装XML请求 以及解析接口返回的XML
    Java SE练习
    Maven手动将jar导入本地仓库
    【公告】【公告】【公告】【公告】
    【题解】SDOI2010地精部落
    【题解】CF559C C. Gerald and Giant Chess(容斥+格路问题)
    【题解】任务安排(斜率优化)
    【题解】Cats Transport (斜率优化+单调队列)
  • 原文地址:https://www.cnblogs.com/youyouxiaosheng-lh/p/8017811.html
Copyright © 2011-2022 走看看