需求二:将一个硬盘上的文本文件打印在控制台上。
1,明确源和目的:
源:硬盘的文件,InputStream or Reader
目的:控制台。OutputStream or Writer。
对于控制台较为特殊,它默认是的目的是System.out.
2,是不是纯文本数据。
是!
源:Reader。
目的:Writer
3,明确体系中的对象。
源:因为是文件,FileReader。
目的:因为是控制台对应的对象是System.out.为了便于字符操作,
所以将System.out.转成字符流。
FileReader fr = new FileReader("a.txt");
OutputStreamWriter osw = new OutputStreamWriter(System.out);
char[] buf = new char[1024];
int len = 0;
while((len=fr.read(buf))!=-1)
{
osw.write(buf,0,len);
}
为了提高操作效率,加入缓冲技术。
BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=bufr.readLine())!=null)
{
bufw.write(line);
bufw.newLine();
bufw.flush();
}
需求三:将键盘录入的数据存储到一个文件中。
1,明确体系;
源:InputStream。Reader
目的:OutputStream ,Writer。
2,明确纯文本。
因为键盘录入的都是字节数据,但是该数据都是纯文本。
所以可以使用字符流。
源:Reader。
目的:Writer.
3,明确体系对象。
源:因为键盘录入,对应的对象是System.in.是一个字节读取流,
为了可以使用字符读取流来操作这些数据。可以将其转换成字符读取流。
那么这时就用到了转换流。InputStreamReader
目的:因为是一个文本文件。所以可以使用FileWriter。
InputStreamReader isr = new InputStreamReader(System.in);
FileWriter fw = new FileWriter("a.txt");
为了提高效率,加入了缓冲技术。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new FileWriter("a.txt"));
需求四:读取键盘录入,将录入的信息打印在控制台上。
1,体系:
源:InputStream,Reader
目的:OutputStream ,Writer
2,纯文本:是!
源:Reader
目的:Writer。
3,对象:
源:System.in
目的:System.out.
因为键盘录入都是纯文本。所以用字符流操作很方便。
那么就将源和目的都转换成字符流
InputStreamReader isr = new InputStreamReader(System.in);
OutputStreamWriter osw = new OutputStreamWriter(System.out);
需要高效。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
注意:在使用写入缓冲区时,记得要进行刷新。flush();
|
|