将字符串写入文本文件

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();
            }            
        }

我得到了正确的控制台输出。

你的做法其实是对的。将数据写入文本文件后,关闭 PrintWriter 实例。

data.close();

如果您想了解更多信息,请查看此 link

代码段:

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();

您在 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();
    }
  }