将字符串写入文本文件

时间:2015-10-06 03:21:52

标签: java file printwriter

我有这段代码从输入流中获取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();
            }            
        }

我正在获得正确的控制台输出。

enter image description here

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

你做的方式实际上是正确的。将数据写入文本文件后,关闭 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();