Я столкнулся с проблемой с BufferedWriter
, когда я записываю данные в один файл с некоторыми потоками.Как установить размер буфера на BufferedWriter над FileWriter
Я установил размер буфера 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();
}
}
}
}
Я запустить программу в debian и mac, он получает тот же результат. Независимо от того, как я изменяю размер буфера, он не влияет. –
И какой эффект вы хотите? –
, если размер буфера установлен на 16384, он должен записывать на диск, когда данные составляют 16384 байта, а не 8192. Теперь независимо от того, что я установил, он записывает на диск каждые 8192 байта. –