Я встретил проблему с 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();
}
}
}
}
FileWriter
буферизуется внутри: stackoverflow.com/questions/6108043/ В документе говорится, что для указания [кодировки символов и размера байтового буфера] самостоятельно создайте OutputStreamWriter на a FileOutputStream, но я не вижу конструктора ни для одного из этих классов, который позволяет указать размер буфера :( - person Chris Martin   schedule 08.09.2015