PrintStream(字节打印流)
PrintStream 是打印输出流,它继承于FilterOutputStream。
PrintStream 永远不会抛出 IOException;它产生的IOException会被自身的函数所捕获并设置错误标记, 用户可以通过 checkError() 返回错误标记,从而查看PrintStream内部是否产生了IOException。
PrintStream 提供了自动flush 和 字符集设置功能。所谓自动flush,就是往PrintStream写入的数据会立刻调用flush()函数。
public void WriteStringToFile(String text,String filename) {
try {
File file = new File("C:/Users/Administrator/Desktop/硕士论文对比/博士1_TextCut/" + filename);
PrintStream ps = new PrintStream(new FileOutputStream(file));
ps.append("text");
ps.append("12345");
ps.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
java.io.PrintStream.append() :将指定字符追加到当前输出流。上述代码输出结果为“text123”
java.io.PrintStream.print() :将指定字符写入到当前输出流。
更改上述代码append()为print(),输出结果相同。一个是不停的追加字符到当前输出流,一个是直接写入当前输出流。
FileWriter写入
FileWriter带有缓冲区,能够减少流的使用,所有在多次写入数据的时候会有速度上的优势。
public void WriteStringToFile1(String text,String filename) {
try {
File file = new File("C:/Users/Administrator/Desktop/TextCut/" + filename);
FileWriter fileWriter = new FileWriter(file);
fileWriter.write("asd");
fileWriter.write("12345");
fileWriter.flush();//FileWriter存在缓冲区,在最后要释放缓冲区的内容,避免还有数据停留在缓冲区里
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
BufferedWriter写入
如果有非常多次的写入可以用BufferedWriter对FileWriter的缓冲区进行优化,BufferedWriter的缓冲区大小还可以进行自定义。
public void WriteStringToFile2(String text,String filename) {
try {
File file = new File("C:/Users/Administrator/Desktop/TextCut/" + filename);
FileWriter fileWriter = new FileWriter(file);
BufferedWriter bufferedWriter =new BufferedWriter(fileWriter); //用BufferedWriter能比FileWriter更快的写入
bufferedWriter .write("asd");
bufferedWriter .write("12345");
bufferedWriter .flush();//同样最后要释放缓冲
bufferedWriter .close();
} catch (IOException e) {
e.printStackTrace();
}
}
设置BufferedWriter缓冲区大小:
//设置缓冲区大小
BufferedWriter bufferedWriter =new BufferedWriter(fileWriter,1024); //在入参后多加个数字就是设置的大小啦
缓冲区并不是越大越好,太大了写入速度不一定会变快,反而还占用了资源,一般用默认就够了。