最全的IO操作知识总结(三)

2014-11-24 10:47:50 · 作者: · 浏览: 3
;

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