2012-12-16 9 views
1

이 방법을 감안할 때 :JFileChooser를 사용하여 txt 파일을 저장하는 방법은 무엇입니까?

public void OutputWrite (BigInteger[] EncryptCodes) throws FileNotFoundException{ 

    JFileChooser chooser = new JFileChooser(); 

    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
    chooser.showSaveDialog(null); 

    String path = chooser.getSelectedFile().getAbsolutePath(); 

    PrintWriter file = new PrintWriter(new File(path+"EncryptedMessage.txt")); 

    for (int i = 0; i <EncryptCodes.length; i++) { 
     file.write(EncryptCodes[i]+ " \r\n");  
    } 
    file.close(); 
} 

변수 이름을 무시을, 어떤이 방법이하는 것은 EncryptedMessage.txt라는 프로젝트 폴더 안에 생성 된 txt 파일에 EncryptCodes의 데이터를 기록합니다.

내가 필요한 것은 프로젝트 폴더 대신 txt 파일을 저장하여 실행 중에 사용자가 지정한 위치에 저장하는 것입니다 (다른 이름으로 저장 대화 상자 열기). 나는 그것이 JFilechooser에 의해 행해질 수 있다고 생각하지만, 그것이 작동하도록 할 수는 없다.

답변

0

이 마음에 드십니까? 부모/디렉토리 인수를 오버로드 File 생성자에 인수로 결과를 사용하여 다음

private File getSaveLocation() { 
    JFileChooser chooser = new JFileChooser(); 
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
    int result = chooser.showSaveDialog(this); 

    if (result == chooser.APPROVE_OPTION) { 
     return chooser.getSelectedFile(); 
    } else { 
     return null; 
    } 
} 

과 :

PrintWriter file = new PrintWriter(new File(filePathChosenByUser + "EncryptedMessage.txt")); 
+0

런타임 중에 사용자가 파일 경로를 선택해야합니다. – user1111726

+0

런타임시'filePathChosenByUser'를 채워야합니까? – Theolodis

+0

내가 정확히 이해했다면, 사용자가 실제로 요청을했을 때 경로를 쓰고, 런타임에 열 수있는 대화 상자가 필요하고 사용자가 디렉토리를 선택해야합니다. – user1111726

5

당신은 지금처럼 저장 위치를 ​​얻기를위한 별도의 방법을 추가 할 수

public void writeOutput(File saveLocation, BigInteger[] EncryptCodes) 
       throws FileNotFoundException { 

    PrintWriter file = 
     new PrintWriter(new File(saveLocation, "EncryptedMessage.txt")); 
    ... 
} 
+0

예. 완벽하지만 문구 "this"는 오류를 나타냅니다. 메서드 JFileChooser 클래스의 showSaveDialog는 지정된 유형에 적용 할 수 없습니다. 필수 : ​​구성 요소 발견 : RSAEncryption 이유 : 실제 인수 RSAEncryption을 메소드 호출 변환으로 구성 요소로 변환 할 수 없습니다. ---- – user1111726

+0

좋습니다. 거기에'JFrame' 인수가 필요합니다. 콘솔 앱에서'JFileChooser' 만 사용한다면 여기에'null'을 사용하면됩니다. – Reimeus

+0

고마워, 많이 작동 했어 – user1111726

관련 문제