我正在处理java应用程序,我正在处理read和
写文件。但我想同时做这个过程。作为我的档案
是一个日志文件,我正在按一段时间间隔读取内容
我使用了java.util.Timer
。在这段时间内,我正在努力
在文件中写一些内容,但这不是我的更新
日志文件。
我的Timer类是
public class Timer extends java.util.Timer {
public void startTimer() {
Timer t = new Timer();
Task task = new Task();
t.schedule(task, 0, 10000);
}
}
我的类表单文件读写类称为
public class Task extends TimerTask {
@Override
public void run() {
System.out.println("In task ....");
try {
SMSQuestions smsQuestions = new SMSQuestions();
smsQuestions.sendSMSAnswer();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
我的文件读写类是
public void sendSMSAnswer()
{
long sender;
String question;
try {
BufferedReader br = new BufferedReader(new FileReader("C:/temp/NowSMS/TEST.log"));
String line = br.readLine();
while (line != null) {
sender = 0;
question = "";
System.out.println(line);
line = br.readLine();
}
//To delete all contents in file
BufferedWriter bw = new BufferedWriter(new FileWriter("C:/temp/NowSMS/TEST.log"));
bw.write("");
getDetails();
}catch(Exception exp)
{
exp.printStackTrace();
}
}
我的问题是我通过写新内容来更新我的日志文件 无法更新所以我的问题是:是否有可能在java中同时读取写文件?
答案 0 :(得分:2)
我建议您查看随机访问文件(请参阅http://docs.oracle.com/javase/tutorial/essential/io/rafs.html)。这个API使用起来有点复杂,因为你将读取字节而不是行,但它应该为你提供所需的东西。
如果您不想处理NIO,可以使用http://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html代替。
答案 1 :(得分:0)
尝试this主题。但是你得到的唯一答案是,它只能使用一些操作系统。
答案 2 :(得分:0)
我对你的代码有两点要说。 第一: 我认为你错过了你应该关闭br和bw的finally块。 尝试: 终于{
br.close();
bw.close();
} 在阻挡之后。
第二:在打开文件时将内容写入文件并不是一个好主意。我的意思是,如果你用br打开一个文件,最好给另一个文件路径bw