关于最近字符流学习的整理


  对于最近断断续续在看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~,逻辑思维太差了,但是真的不甘心就当个普通的功能测试点点点,最近除了上班加班,偶然发现了几个不错的博客,

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