我想将ArrayList<Double>
数组写入文件中,这样当我双击文件时,文件就会打开,用户可以读取数据。
我试过了DataOutputStream
&amp; RandomAccessFile
;两者都工作正常,但当我双击文件时,它显示的数据不是可读的形式。
我试过了:
ArrayList<Double> larr=new ArrayList<Double>();
larr.add(5.66);
larr.add(7.89);
try{
FileOutputStream fos = new FileOutputStream("out.txt");
DataOutputStream dos = new DataOutputStream(fos);
for(Double d:larr)
dos.writeDouble(d);
dos.close();
} catch(Exception ex) {
ex.printStackTrace();
}
但现在的情况是,当我通过双击打开文件out.txt
时。它以不可读的形式出现。
答案 0 :(得分:0)
我会使用PrintWriter
来获取out.txt
的人类可读值(我会亲自指定父文件夹;我喜欢用户的主目录)。此外,我更喜欢 try-with-resources
close和方法。像,
public static void writeList(List<Double> al) {
File f = new File(System.getProperty("user.home"), "out.txt");
try (PrintWriter pw = new PrintWriter(f)) {
for (Double d : al) {
pw.println(d);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
此外,您可以声明并初始化 larr
1 ,例如
List<Double> larr = new ArrayList<>(Arrays.asList(5.66, 7.89));
1 请编程到List
界面。
答案 1 :(得分:0)
这是因为您说您尝试使用的I / O流(DataOutputStream
和RandomAccessFile
)将数字视为二进制数据而不是文本。您应该使用PrintStream
。
示例:
PrintStream ps = new PrintStream(new File(filePath));
ps.println(5.25);
ps.close(); // Be sure to close the stream when you're done with saving the numbers
注意到熟悉ps.println(5.25)
的内容? System.out.println(5.25)
与控制台完全相同