我希望将用户输入的所有纬度和经度数据写入WriteGPSData.txt。但这段代码只写了最后输入的纬度和经度。帮我解决这个问题。
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.JOptionPane;
public class GPS_main {
public static void main(String[] args) {
String strFilePath = "WriteGPSData.txt";
try {
System.out.println("+++=====GPS POINTS=======+++");
// GPS p1 = new GPS ();
GPS[] p2;
p2 = new GPS[3];
p2[0] = new GPS();
// GPS p2 = new GPS();
for (int i = 0; i < p2.length; i++) {
p2[i] = new GPS();
String aa = JOptionPane.showInputDialog("Enter latitude: ");
double a = Double.parseDouble(aa);
p2[i].setLat(a);
String bb = JOptionPane.showInputDialog("Enter longitude: ");
double b = Double.parseDouble(bb);
p2[i].setLon(b);
// System.out.println(p2[i].toGPSString());
FileOutputStream fos = new FileOutputStream(strFilePath);
DataOutputStream dos = new DataOutputStream(fos);
String a2 = Double.toString(a);
String b2 = Double.toString(b);
// System.out.println("hello"+a2+b2);
dos.writeBytes(a2 + " " + b2);
dos.close();
}
} catch (IOException e) {
System.out.println("IOException : " + e);
// System.out.println(" ");
}
}
}
在 BlueJ 中运行
最佳答案
将这些行保留在 for 循环之外:
FileOutputStream fos = new FileOutputStream(strFilePath);
DataOutputStream dos = new DataOutputStream(fos);
写入完成后关闭OutputStream。你可以使用finally()
并在其中写入dos.close();
。
在您的代码中,每次迭代都会创建一个新文件,因此旧数据会被覆盖。
关于java - 使用 DataOutputStream 将带有数组的字符串作为字节写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16169888/