2016-06-19 3 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처럼 한 줄에larr1를 초기화하고 List 인터페이스에 프로그래밍하십시오 . 는 I/O가 당신이 (DataOutputStreamRandomAccessFile)이 아니라 텍스트보다는 바이너리 데이터로 숫자를 치료하는 사용하려했다 스트림 때문에

0

이 있습니다. 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)정확히 같은 것을 콘솔에합니다.

관련 문제