BufferedWriter bufw = newBufferedWriter(new FileWriter(“b.txt”));
需求二,将一个硬盘上的文件打印在控制台上。
1, 明确源和目的
源:硬盘的文件。读取文件,体系是InputStream or Reader
目的:控制台。OutputStream or Writer
对于控制台较为特殊,其默认的目的是System.out
2, 是不是纯文本数据
是
源:Reader
目的Writer
3,明确体系中的对象
源:因为是一个文件,FileReader
目的:因为是控制台对应的对象是System.out,为了便于字符操作,所以将System.out转换成字符流。
FileReader fr =new FileReader(“a.txt”); 读取字符流
OutputStreamWriterout =new OutputStreamWriter(System.out;); //输出字节流
FileReader fr =new FileReader(“a.txt”); 读取字符流
OutputStreamWriterosw = new OutputStreamWriter(System.out);这里也变成了字符流了。
char[] buf = new char[1024];
int len = 0;
while((len=fr.read(buf))!=-1){
osw.writer(buf,o.len); //将数据写到目的了(buf),即控制体。
}
为了提高效率,加入缓冲技术。
BufferedReader buf = new BufferReader(newFileReader(“a.txt”));
BufferedWriter bufw = newBufferedWriter(new OutputStreamWriter(“b.txt”));
String line = null;
While((lien=bufr.readLine())!=null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
需求三,将录入的文件写入硬盘上的文件。
1,明确体系;
源:InputStream。 System.in
目的:硬盘文件 OutputStream,Writer。
2, 明确纯文本。
因为键盘录入的都是字节数据。但是该数据最终得转化成为纯文本。
所以可以使用字符流。
源:Reader
目的:Writer。
3, 明确体系对象
源:因为键盘录入,对应的对象是System.in,是一个字节读取流。
为了可以使用字符读取留来操作这些数据,可以将其转换成字符读取流
目的:因为是一个文本文件,所以可以使用FileWriter。
InputStreamReaderisr = new InputStreamReader(System.in);
FileWriter fw =new FileWriter(“a.txt”);
为了提高效率,加入了缓冲技术
Bufferreader bufr = new BufferedReader(newInputStreamReader(System,in));
BufferedWriter bufw = newBufferedWriter(new FileWriter(“a.txt”));
需求四:读取键盘录入,将录入的信息打印在控制台上,
1体系:
源:InputStream Reader
目的:OutputStream,Writer
2纯文本:是
源:Reader
目的:Writer
4, 对象:
源:System.in
目的:System.out
因为键盘录入都是纯文本,所以用字符流操作很方便。
那么就将源和目的都转换成字符流
InputStreamReader isr = newInputStreamReader(System.in);
OutputStreamWriter osw = newOutputStreamWriter(System.out);
需要高效
BufferedReader bufr = newBufferedReader(new InputStreamReaderl(System,in));
BufferedWriter bufw = newBufferedWriter(new OutputStreamWriter(System.out));
注意:在使用写入缓冲区时,记得要进行刷新。flush().
需求五:将一个文本文件中的数据存储到另一个文本文件中,要求按照UTF-8的编码形式存储
1, 体系
源InputStream or Reader
目的:OutputStream or Writer
2,纯文本?yes
源:Reader
目的:Writer
3,对象:
因为操作是文本,而且没有指定编码。所以可以按照默认编码形式
。那么就可以使用FileReader
目的:
按照一般思想,会去找FileWriter。但是FileWriter使用的默认编码。
而需求中要求按照指定编码UTF-8形式存储
那么这时就要用到转换流,因为只有转换流可以在初始化是指定编码。
目的也是一个文件。那么就明确要使用的对象是FileOutStream。
FileReader fr =new FileReader(“a.txt”);
OutlputStreamWriterosw = new OutputStream(new FileOutputStream(“b.txt”),”UTF-8”);
需要提高效率
BufferedReaderbufr = new BufferedReader(new FileReader(a.txt));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(newFileOutputStream(“b.txt”),”UTF-8”));
package toto.IO;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class TransStreamDemo {
/**
* @param args
*/
publicstatic void main(String[] args)throws IOException {
//writeText();
readText();
}
publicstatic void readAndWrite()throws IOException{
FileReaderfr = new FileReader("test.txt");//字符流
//FileWriterfw = new FileWriter("test1.txt");//默认的字符集。
OutputStreamWriterosw = new OutputStreamWriter(new
FileOutputStream("text1.txt"),"utf-8");//字符流
char[] b