/*
*简单的读/写文本文件的示例
*这里包含了三个例子,即
*1.将文件读入到内存(这里是StringBuffer)的例子
*2.将内容中的文本写到文件
*3.将一个文件的内容读出来写入另一个文件中
*同时也展示了如果从输入流中读出来内容写入输出流中(仅限文本流)
*三个例子可以独立存在,所以根据需要只看其中一个就行了。
*/
importjava.io.BufferedReader;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.OutputStreamWriter;
importjava.io.PrintStream;
importjava.io.PrintWriter;
publicfinalclassAccessTextFile{
/**
*1.演示将流中的文本读入一个StringBuffer中
*@throwsIOException
*/
publicvoidreadToBuffer(StringBufferbuffer,InputStreamis)
throwsIOException{
Stringline;//用来保存每行读取的内容
BufferedReaderreader=newBufferedReader(newInputStreamReader(is));
line=reader.readLine();//读取第一行
while(line!=null){//如果line为空说明读完了
buffer.append(line);//将读到的内容添加到buffer中
buffer.append("n");//添加换行符
line=reader.readLine();//读取下一行
}
}
/**
*2.演示将StringBuffer中的内容读出到流中
*/
publicvoidwriteFromBuffer(StringBufferbuffer,OutputStreamos){
//用PrintStream可以方便的把内容输出到输出流中
//其对象的用法和System.out一样
//(System.out本身就是PrintStream对象)
PrintStreamps=newPrintStream(os);
ps.print(buffer.toString());
}
/**
*3*.从输入流中拷贝内容到输入流中
*@throwsIOException
*/
publicvoidcopyStream(InputStreamis,OutputStreamos)throwsIOException{
//这个读过过程可以参阅readToBuffer中的注释
Stringline;
BufferedReaderreader=newBufferedReader(newInputStreamReader(is));
PrintWriterwriter=newPrintWriter(newOutputStreamWriter(os));
line=reader.readLine();
while(line!=null){
writer.println(line);
line=reader.readLine();
}
writer.flush();//最后确定要把输出流中的东西都写出去了
//这里不关闭writer是因为os是从外面传进来的
//既然不是从这里打开的,也就不从这里关闭
//如果关闭的writer,封装在里面的os也就被关了
}
/**
*3.调用copyStream(InputStream,OutputStream)方法拷贝文本文件
*/
publicvoidcopyTextFile(StringinFilename,StringoutFilename)
throwsIOException{
//先根据输入/输出文件生成相应的输入/输出流
InputStreamis=newFileInputStream(inFilename);
OutputStreamos=newFileOutputStream(outFilename);
copyStream(is,os);//用copyStream拷贝内容
is.close();//is是在这里打开的,所以需要关闭
os.close();//os是在这里打开的,所以需要关闭
}
publicstaticvoidmain(String[]args)throwsIOException{
intsw=1;//三种测试的选择开关
AccessTextFiletest=newAccessTextFile();
switch(sw){
case1://测试读
{
InputStreamis=newFileInputStream("E:test.txt");
StringBufferbuffer=newStringBuffer();
test.readToBuffer(buffer,is);
System.out.println(buffer);//将读到buffer中的内容写出来
is.close();
break;
}
case2://测试写
{
StringBufferbuffer=newStringBuffer("Onlyatestn");
test.writeFromBuffer(buffer,System.out);
break;
}
case3://测试拷贝
{
test.copyTextFile("E:test.txt","E:r.txt");
}
break;
}
}
}