如何使用Java将ArrayList <double>写入文件

时间:2016-06-19 01:49:56

标签: java arraylist collections

我想将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时。它以不可读的形式出现。

2 个答案:

答案 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流(DataOutputStreamRandomAccessFile)将数字视为二进制数据而不是文本。您应该使用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) 与控制台完全相同