Можно ли читать и записывать один и тот же текстовый файл одновременно?
Первый поток добавит текстовые строки в файл, добавит «конечную» строку, когда данных нет.
Второй поток должен прочитать данные из этого файла и заблокировать, если появятся новые данные. он должен заканчиваться, когда он читает «конечную» строку.
public class TheFileReader implements Runnable {
public void run() {
FileInputStream is = null;
BufferedReader fbr = null;
File file = new File ("C:\\temp\\fileout3.txt");
String s1 ="";
try {
fbr = new BufferedReader(new FileReader(file), 1024*1024);
while (s1.equals("exit")==false){
s1 =fbr.readLine();
if (s1==null){
s1="";
Thread.sleep (50);
}
else
System.out.println(s1);
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} finally
{
try {
fbr.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
public class TheFileWriter implements Runnable {
public void run() {
FileOutputStream os = null;
BufferedWriter fbw = null;
File file = new File ("C:\\temp\\fileout3.txt");
String s1 ="";
try {
fbw = new BufferedWriter(new FileWriter(file), 1024*1024);
for (int i = 0; i < 100; i++) {
fbw.write("test" + i);
fbw.newLine();
}
fbw.write("exit");
} catch (IOException e) {
e.printStackTrace();
} finally
{
try {
fbw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
UPDATE:
если я добавлю fbw.flush() after fbw.newLine();
Я думаю, что это будет работать.