我有这段代码从输入流中获取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();
}
}
我正在获得正确的控制台输出。
答案 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();