簡體   English   中英

將字符串寫入文本文件

[英]Write String to a text file

我有這段代碼可以從輸入流中獲取GPS數據,從而生成測試文件,但里面沒有任何內容。 你能告訴我這里有什么問題嗎?

public void run ()
        {
            byte[] buffer = new byte[1024];
            int len = -1;
            try
            {
                while ( ( len = this.in.read(buffer)) > -1 )
                {
                    String gpsInfo = new String(buffer,0,len);
                    PrintWriter data = new PrintWriter("test.txt");
                    data.println(gpsInfo);
                    System.out.print(gpsInfo);
                }
            }
            catch ( IOException e )
            {
                e.printStackTrace();
            }            
        }

我正在獲得正確的控制台輸出。

在此處輸入圖片說明

您正在while loop重復打開同一文件 您應該在進入循環之前先打開。 flush()close()流。

      PrintWriter data = new PrintWriter("test.txt");
      while((len = this.in.read(buffer)) > -1) {
        String gpsInfo = new String(buffer,0,len);
        data.println(gpsInfo);
        System.out.print(gpsInfo);
      }
      data.flush();
      data.close();

如果您使用的是Java 7及更高版本,則可以在try塊本身中打開文件。 在try塊中的代碼完成后,它將自動關閉。 但是不要忘了flush()數據。

  public void run () {
    byte[] buffer = new byte[1024];
    int len = -1;
    try (PrintWriter data = new PrintWriter("test.txt")) {
      while((len = this.in.read(buffer)) > -1) {
        String gpsInfo = new String(buffer,0,len);
        data.println(gpsInfo);
        System.out.print(gpsInfo);
      }
      data.flush();
    }
    catch ( IOException e ) {
      e.printStackTrace();
    }
  }

您的做法實際上是正確的。 將數據寫入文本文件后, 關閉 PrintWriter實例。

data.close();

如果您想了解更多信息,請查看此鏈接

代碼段:

PrintWriter data = new PrintWriter("test.txt");
String gpsInfo = null;

while ( ( len = this.in.read(buffer)) > -1 )
{
     gpsInfo = new String(buffer,0,len);
     data.println(gpsInfo);
     System.out.print(gpsInfo);
}

data.close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM