2016-06-19 14 views
-4

ArrayList<Double>の配列をファイルに書き込むと、ファイルをダブルクリックするとファイルが開き、ユーザーはデータを読み取ることができます。ArrayList <Double>をJavaのファイルに書き込む方法

私は試しましたDataOutputStream & 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を開いたときにということです。それは非可読形式で来る。

+3

@Lok - PrintWriterを使ってください。特に 'PrintWriter.print(double)' –

+0

@ray私はそれを試みましたが、役に立たないです。 Files.writeのように、charシーケンスを受け入れています。 – Lok

+1

@Lok:質問を投稿する基本的なルールに従えば、もっと多くの助けを得ることができます。たとえば、[Minimal-Complete-Verifiable-Example](https://stackoverflow.com/help/mcve)を提供する必要があります。合理的な量の助けを期待している場合には、他の人が見るためのコードを提供する必要があります。また、立ち往生後すぐに質問するのではなく、実際に何かを調査したことを示している必要があります。 – ray

答えて

0

私はout.txtに人間が読める値を得るためにPrintWriterを使用します(私は親フォルダを個人的に指定します;ユーザのホームディレクトリが好きです)。また、は、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(); 
    } 
} 

、あなたは可能性がありを宣言

List<Double> larr = new ArrayList<>(Arrays.asList(5.66, 7.89)); 

のように1行でlarrを初期化し、Listインターフェイスにプログラミングしてください。

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)正確にははコンソールに同じものです。

関連する問題