[第四季]14.字节流转换为字符流并讲解打印流
1.利用BufferedReader来一行一行读取文本文件
①new 一个FileReader,命名为fr,位置是”D:\a.txt”
②用BufferedReader包装一下,命名为br.
③新建一个str为空字符串,声明一个int i,初始值为1.
④开始按行读取字符串并打印在屏幕上,每打印一行i就++一行.

————知识补充:不要仅仅局限于代码—————-
补充:这些知识真的是我第一次接触,那我笔记只能记得很详细,但是那对知识的理解就没有意义了,因为以后不会有人给我笔记,所以我学会了查看API文档,首先找到java.IO包,然后找到BufferedReader类,再找到下面的方法readline(),这里我们的目的是基于代码来和笔记来敲代码.
笔记指导我们干什么事情,结合代码思考接下来怎么做,而不是完全依靠笔记,否则是没有成长的.
最后今天最最重要的事情这里要重复一下,一定要学会看api,这样就可以弄懂代码什么意思了.
————知识补充:不要仅仅局限于代码—————-

————知识补充:BufferedReader—————-
public class BufferedReader
extends Reader从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。
我们可以看到,关键在于高效两个字,BufferedReader可以进行高效的读取,想起老师在课堂上.

————知识补充:BufferedReader—————-

⑤注意关闭fr.

快学到最后了,该复习一下那些是字符流,哪些是字节流了.

java将bufferedImage转MultipartFile需要删除什么吗 bufferedreader转string_java

明白了上面自己流和字符流的区别,那么总结一下第1小结的内容.
首先新建字符流FileReader fr
然后为了高效读取,把字符流FileReader fr包装成BufferedReader br,
然后新建String str为空字符,这个为接下来做准备.
接下来将BufferedReader br一行一行的读取到str中,具体方法参见API(java.io包),并打印出来.

做了上面的总结,接下来的代码看起来也应该轻松很多.

2.将字节流转换为字符流InputStreamReader,OutputStreamWriter
接着上面的话题,我们完全靠笔记是不行的,我们在API里找找这两个是什么东西
①new一个字节流FileOutputSteam,位置么自己选,名字命名为fos
注意:因为这个位置就算没有,也会自己创建,当然也不能够找个不可能的位置,比方说本来没有A盘,搞个位置是在A盘的某个位置(“d:\b.txt”),
②准备字符串,”我爱我的祖国”
③将str写入fos中.
————知识补充:FileOutputSteam的Write方法—————-
write(byte[] b)
将 b.length个字节从指定的字节数组写入此文件输出流。
————知识补充:FileOutputSteam的Write方法—————-
④将字节流FileOutputSteam fos转换成字符流OutputStreamWriter osw

————知识补充:OutputStreamWriter —————-
首先查看API文档,看看这个东西的继承关系.
java.lang.Object
java.io.Writer(字符流)
java.io.OutputStreamWriter(字符流)
这个东西他很奇怪,既有Steam,又有Writer,在上面的继承关系可以看见,这个是属于字符流的.
就是这样的——–猜测是不是这样:继承于谁就在前面加上修饰词———-恩,就是这样的.

write(String str, int off, int len)
写一个字符串的一部分。

接下来补充一下outputStreamWriter的构造函数
OutputStreamWriter(OutputStream out)
创建一个使用默认字符编码的OutputStreamWriter。

我们可以看见OutputStream这个类,我们点进去看看,看见已知直接子类:
ByteArrayOutputStream , FileOutputStream , FilterOutputStream , ObjectOutputStream , OutputStream , PipedOutputStream.
上面我们创建的是FileOutputStream,所以,我们可以直接根据FileOutputStream创建.
————知识补充完了我们继续 —————-

3.PrintStream,PrintWriter,通过打印输出的方式,往流中输出数据
这个我就不写代码了,这里我说说查看API文档怎么得来的代码吧.
首先我要用PrintWriter这个类,
①首先我们找到API文档中的PrintWriter;
我们可以看见构造函数中有这个,

PrintWriter(Writer out)
创建一个新的PrintWriter,没有自动线冲洗。

然后看见Writer已知直接子类:
BufferedWriter , CharArrayWriter , FilterWriter , OutputStreamWriter , PipedWriter , PrintWriter , StringWriter

就知道要可以使用PrintWriter(FilterWriter out)的方法.

②同样的PrintStream,我们先查看构造函数:
PrintStream(OutputStream out)
创建一个新的打印流。
我们再看已知直接子类:
ByteArrayOutputStream , FileOutputStream , FilterOutputStream , ObjectOutputStream , OutputStream , PipedOutputStream
我们知道可以用PrintStream(FileOutputStream)创建.
创建了PS流之后,接下来我们要打印,查看文档我们看见:


print(char c)
打印一个字符


所以最后的代码是ps.print(“今天天气不错”);

*****笔记结束**

6.利用BufferedReader来一行一行读取文本文件

package javastudy;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Test 
{

    public static void main(String[] args) throws IOException 
    {

        //6.利用BufferedReader来一行一行读取文本文件
        FileReader fr=new FileReader("D:\\a.txt");
        BufferedReader br=new BufferedReader(fr);
        String str="";
        int i=1;
        while((str=br.readLine())!=null)
        {
            System.out.println(i+"\t"+str);
            i++;
        }
        fr.close();
        //7.将字节流转换为字符流InputStreamReader,OutputStreamWriter


    }
}

7.将字节流转换为字符流InputStreamReader,OutputStreamWriter

package javastudy;

//import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class Test 
{

    public static void main(String[] args) throws IOException
    {


        //7.将字节流转换为字符流InputStreamReader,OutputStreamWriter
        FileOutputStream fos=new FileOutputStream("d:\\b.txt");
        String str="我爱我的祖国!";
        fos.write(str.getBytes());
        OutputStreamWriter osw=new OutputStreamWriter(fos);
        osw.write("我爱北京天安门!");
        osw.close();
        fos.close();

    }
}

8.PrintStream,PrintWriter,通过打印输出的方式,往流中输出数据,

package javastudy;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

public class Test 
{

    public static void main(String[] args) throws IOException
    {
        //8.PrintStream,PrintWriter,通过打印输出的方式,往流中输出数据,注意两者的区别。
          //字节打印流,和字符打印流
        FileOutputStream fos=new FileOutputStream("d:\\b.txt");
        //往里面写东西,通过打印的方式
        PrintStream ps=new PrintStream(fos);
        ps.print("今天天气不错");
        ps.close();
        fos.close();
        //接下来讲PrintWriter

    }
}

接下来讲PrintWriter

package javastudy;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Test 
{

    public static void main(String[] args) throws IOException
    {

        //接下来讲PrintWriter
        FileWriter fw=new FileWriter("d:\\234.txt");
        PrintWriter pw=new PrintWriter(fw);
        pw.print("明天天气会怎么样呢?");

        pw.close();
        fw.close();
    }
}