文件 I/O缓冲流

时间:2023-02-17 16:32:16
import java.io.File;
import java.io.Writer;
import java.util.StringTokenizer;
import java.io.Reader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.BufferedWriter;
public class test_main {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		File fRead = new File("english.txt");
		File fWrite = new File("englishCount.txt");
		try {
			fRead.createNewFile();
			Writer out = new FileWriter(fWrite);
			BufferedWriter bufferWrite = new BufferedWriter(out);
			/*BufferedWriter将文本写入字符输出流,缓冲字符,
			以提供单个字符,数组和字符串地高效写入。
			创建使用默认大小的输出缓冲区地缓冲字符输出流。*/
			Reader in = new FileReader(fRead);
			BufferedReader bufferRead = new BufferedReader(in);
			/*BufferedReader从字符输入流读取文本,缓冲字符,以提供字符,数组
			和行的高效读取。可以指定缓冲区大小,或者使用默认大小。*/
			String str = null;
			while((str=bufferRead.readLine())!=null) {
				/*readLine读取一行文字。一行被视为由换行符('\n'),
				回车符('\r')中的任意一个,紧跟换行符的回车符或到达
				文件末尾终止(EOF)。*/
				StringTokenizer fenxi = new StringTokenizer(str);
				int count = fenxi.countTokens();
				
				str +=" 句子中单词个数:"+count;
				bufferWrite.write(str);
				//写入一个字符串
				bufferWrite.newLine();
				//写入一行行分隔符。
			}
			bufferWrite.close();
			out.close();
			in = new FileReader(fWrite);
			bufferRead = new BufferedReader(in);
			String s = null;
			System.out.println(fWrite.getName()+"内存");
			while((s = bufferRead.readLine())!=null){
				System.out.println(s);
			}
			bufferRead.close();
			in.close();
		}
		catch(IOException e) {
			System.out.println(e.toString());
			//toString()是Throwable的方法
			//返回对象类的name:调用该对象的结果
			//创建此可抛出的本地化描述。 子类可以覆盖此方法,
			//以生成特定于区域的消息。 对于不覆盖此方法的子类,
			//默认实现将返回与getMessage()相同的结果。 
		}
	}

}