接收消息并将其保存到当前目录中的文件中

时间:2017-11-02 02:13:39

标签: java printwriter

这是一个问题:接收消息并将其保存到当前目录中的文件中。 我的问题是,即使收到消息,我也无法将它们写入文件。文件已更新但为空。然而消息被打印在界面上。我想要的是消息在文件中,而不是打印在界面上。

这是代码

 public void receiveMessages() {
  File file = new File ("msgs.txt");   
  if (!file.exists()) { 
   try {
    file.createNewFile();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
   PrintWriter printWriter = null;
  try {
   printWriter = new PrintWriter(file);
   SealedObject encrypedSealedObject = null;
   while(true){
    try {
     String message = this.crypto.decryptMsg(encrypedSealedObject);
     printWriter.println(message);
    }
    catch (IOException e) { 
     break;
    }
   }
  }
//catching exceptions ``here.... etc

}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  • PrintWriter实现了Flushable接口。
  

Flushable是可以刷新的数据的目标。同花顺   调用方法将任何缓冲的输出写入底层   流。

因此,您必须将输出刷新到文件中。所以,你必须使用pw.flush()。

  • 上面的代码将重写文件而不附加连续的消息。如果这是你的要求那么它可以。但是,我建议如下:

    let data = [[a,b,c,d],[a,b,c,d],[a,b,c,d]];
    
  • 不需要在两个语句中使用2 try和catch,而是抛出IOException。我建议抛出Throwable并处理顶层错误,这是一种很好的做法,也更容易维护。函数调用只能执行逻辑。