zoukankan      html  css  js  c++  java
  • 关于最近字符流学习的整理

      对于最近断断续续在看java基础,然后在看完视频后自己实操时,经常会忘记的在使用时的一些步骤。

      FileWriter用于将内容写入文件,FileReader则是从文件中读取内容。使用这两个类的步骤是:

      FileWriter

    1. 创建对象,调用其构造方法:FileWriter fw = new FileWriter("文件名");       *如果文件找不到,则会自己新建一个
    2. 调用写数据的成员方法: fw.writer("内容");
    3. 调用关闭的成员方法关闭相关资源: fw.close();

      FileWriter的构造方法:public  FileWriter(String filename){};

      FileReader

    1. 创建对象,调用其构造方法:FileReader fr = new FileReader("文件名");     *如果找不到该文件,会抛出filenotfound的错误
    2. 调用读取数据的方法获取单个字符: fw.read(); 
    3. 调用关闭的成员方法关闭相关资源: fr.close();

      public int read(){}:返回值为单个字符对应的ASCII值或者Unicode值

      *每次调用都会读取下一个字符,如果没有字符了,则返回-1

      注意:在调用读取文件内容的read()时,由于不知道文件中有多少个字符,所以一般读取采用循环来执行。不确定字符数,所以就用while循环,当得到-1的时候停止循环。

      如:   int ch;

        while((ch = fr.read()) != -1){

           System.out.println((char)ch);//强制转换为字符

            }   

       *FileReader读取字符数组

       调用read方法的另外一种重载形式:public int read(char[] buf){}:一次性读取整个字符数组的数据

      *参数是一个字符数组,用来承载读取到的多个字符

      *返回值代表的时数组中读取到的有效个数

      示例代码:  FileReader fr = new FileReader("text01.txt");

                   char[] cr = new char[2];//定义一个长度2的字符数组

            int  len;

            while((len = fr.read(cr)) != -1){

               String str = new String(cr,0.len);//因为获取到的是字符,所以将其转化位字符串输出。String()中传入字符数组,len为位数。

               System.out.println(str);

                 }

                运行结果:

        

      BufferedWriter和BufferedReader,同样是对文件进行操作,一个是用于写文件一个是从文件中读取内容。

      BufferedXXX和FileXXX的区别:

      *BufferedXXX中有设立一个长度为8192的char[]字符数组当作缓冲区使用,性能更好

      每次在写数据的时候,实际上就是不断地往缓冲区中添加字符,当把数组写满时就会写入到硬盘文件中(BufferedReader读取文件亦同理),如果数组没有写满,则等到写满才写入。

      最终关闭close时,数组仍然没有写满,那么也会将数组中有的所有内容写入到文件中。

      

      构造方法:public BufferedWriter(FileWriter fw){}:需要将FileWriter的对象作为参数传入,

      示例:FileWriter fw = new FileWriter("text01.txt");

         BufferedWriter bw = new BufferedWriter(fw);

      *BufferedWriter额外提供了一个换行的方法,newLine();

        

           public BufferedReader(FileReader fr){}:需要将FileReader的对象作为参数传入

       与上面类似

       BufferedReader中有一个读取一行的方法:public void readLine():读取一行字符串,不包含换行符

       贴上几则小练习:

        1.创建一个集合,往当中添加内容,然后将集合中的内容写入文件

        

        这里也是被自己蠢到了!!

        2.将硬盘文件中的内容读取到集合当中,输出集合内容

        

         ***这里之前试的时候,循环读取内容步骤写错,while(br.readLine()!=null){ String line = br.readLine(); list.add(line)},导致运行结果只输出了偶数位的值

        晕死,被自己蠢哭~~~

         3.将硬盘文件中的文本内容读取出来存放到集合,再倒序写入另外一个文本文件

        

         这道因为上面两个的教训,总算没出多大失误,但也不排除自己靠着记忆,印象在敲,最后这道主要是循环要倒序读取出来。

         

         第一篇博文,希望自己可以坚持下来把。其实一直怀疑自己真的不适合coding~,逻辑思维太差了,但是真的不甘心就当个普通的功能测试点点点,最近除了上班加班,偶然发现了几个不错的博客,

        大概看了下,都是我看不懂的技术栈,都是名厂的大神。真是十足崇拜,果断收藏了~总之加油吧。趁现在还年轻,多吃点学习的苦为以后少吃生活的苦!!!

  • 相关阅读:
    PAT (Basic Level) Practice (中文)1076 Wifi密码 (15 分)
    PAT (Basic Level) Practice (中文)1047 编程团体赛 (20 分)
    PAT (Basic Level) Practice (中文)1029 旧键盘 (20 分)
    PAT (Basic Level) Practice (中文)1016 部分A+B (15 分)
    延迟加载
    Js之全局函数
    Js之数组
    前端性能优化
    排序算法小结
    CSS居中总结
  • 原文地址:https://www.cnblogs.com/kingxyt06/p/10128969.html
Copyright © 2011-2022 走看看