简单的用java实现读/写文本文件的示例

时间:2021-05-19

/*
*简单的读/写文本文件的示例
*这里包含了三个例子,即
*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("Onlyatest\n");
test.writeFromBuffer(buffer,System.out);
break;
}
case3://测试拷贝
{
test.copyTextFile("E:\\test.txt","E:\\r.txt");
}
break;
}
}

}

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章