同时读写java

时间:2013-04-02 07:34:43

标签: java file simultaneous

我正在处理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中同时读取写文件?

3 个答案:

答案 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