[第四季]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.
快学到最后了,该复习一下那些是字符流,哪些是字节流了.
明白了上面自己流和字符流的区别,那么总结一下第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();
}
}