如何通过FileWriter在BufferedWriter上设置缓冲区大小
BufferedWriter
当我使用一些线程将数据写入单个文件时遇到问题。
我设置的缓冲区大小BufferedWriter
,但是无论设置多少,当缓冲区为8192(默认缓冲区大小)而不是我设置的大小(此处为16384)时,它都会将数据刷新到磁盘。我的代码有问题吗?
这就是我构建的方式BufferedWriter
:
new BufferedWriter(new FileWriter(fileName, true), 16384);
这是完整的代码:
import java.io.BufferedWriter;import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class Test1 {
public static void main(String[] args) throws IOException {
for(int i =0;i<10;i++){
MyThread r = new MyThread();
Thread t = new Thread(r);
t.start();
}
}
}
class MyThread implements Runnable {
public void run() {
String s = "{addffffffkkkljlkj2015dd}\n";
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(
"/Users/liaoliuqing/Downloads/1.txt", true),16384);
} catch (IOException e) {
e.printStackTrace();
}
for(int i =0 ; i<1000; i++){
try {
bw.write(String.format("%03d", i)+s);
//bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
回答:
我通过使用OutputStream而不是writer解决了问题,这是代码:
bw = new BufferedOutputStream( new FileOutputStream(new File("/Users/liaoliuqing/Downloads/1.txt"),true),165537);
以上是 如何通过FileWriter在BufferedWriter上设置缓冲区大小 的全部内容, 来源链接: utcz.com/qa/413305.html