Java 将字符串写入文本文件

Java 将字符串写入文本文件,java,file,printwriter,Java,File,Printwriter,我有这个代码,从输入流获取GPS数据,生成测试文件,但里面什么都没有。你能告诉我这里有什么问题吗 public void run () { byte[] buffer = new byte[1024]; int len = -1; try { while ( ( len = this.in.read(buffer)) > -1 )

我有这个代码,从输入流获取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();
如果您想了解更多信息,请查看此

代码片段:

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循环中重复打开同一个文件。你应该在进入循环之前打开。同时
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();

如果您使用的是Java7及以上版本,那么您可以在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();
    }
  }

我认为您需要调用
data.close()
输出文件仍然没有成功。我需要追加吗?该方法是否每次都覆盖该文件?文本文件上仍然没有输出。尝试了更新的代码,但文本文件上仍然没有输出。这对我适用
提供文件的绝对路径
并尝试将输出写入文件。我建议您提供文件的绝对路径,以便进行测试。