2013-06-02 2 views
0

문제는 Netbeans에 문서를 저장하는 것입니다. Netbeans에서 Java를 사용하는 프로그램을 만들었습니다. 처음 등록 할 때 (등록 버튼을 클릭하면 사용자 이름으로 새 사용자 맵이 작성됩니다), 사용자 이름과 비밀번호로 로그인합니다. 로그인하면 프로그램이 문서를 작성할 수있는 새 창을 표시합니다. TextArea에 텍스트를 쓸 수 있습니다. 그런 다음 텍스트 작성을 마치면 저장 버튼을 클릭하면 작성한 텍스트가 jTextField에서 지정한 텍스트의 이름을 가진 문서에 저장됩니다. 따라서 모든 다른 로그인에 대해 절대 경로가 변경됩니다.절대 경로의 변수를 사용하여 Java에서 파일을 저장하는 방법은 무엇입니까?

이 내 코드에서 버튼을 제출이다 : 당신의 경로에 여분의 공간 오타가 같은

//ccc is the name of user map 
String ccc = LogIn.uporabnik1; 
try{ 
    FileWriter writer = new FileWriter("C:\\Users\\ALEKS\\Documents\\NetBeansProjects\\EasyEdit\\"+ccc+"\\"+FileName+".txt"); 
    BufferedWriter bw = new BufferedWriter (writer); 
    jTextArea1.write(bw); 
    bw.close(); 
    jTextArea1.setText(""); 
    jTextArea1.requestFocus(); 
    writer.close(); 
} 
catch(Exception e){ 
    JOptionPane.showMessageDialog(null, e); 
} 

답변

2

것 같습니다.

Path path = Paths.get("C:/Users/ALEKS/Documents/NetBeansProjects/EasyEdit/" 
        + ccc + "/" + FileName + ".txt"); 

그리고 : 당신이 자바 7 이상을 사용하는 경우

주의의 대안으로, 당신은 또한 운영 체제 특정 분리기 (\\ 또는 /)를 처리하지 않고 경로를 생성하는 경로 유틸리티 클래스를 사용할 수있는 코드 짧은을하고 수동으로 스트림을 생성을 종료하지 않아도

String text = jTextArea1.getText(); 
Files.write(path, text.getBytes("UTF-8")); 

: 파일에 문자열을 작성합니다.

마지막으로 long-ish 조작의 경우, GUI 스레드를 사용하지 말고 대신 백그라운드 스레드를 사용하십시오. 그렇지 않으면 저장 조작이 진행 중일 때 응용 프로그램이 응답하지 않게됩니다.

+0

필자는 Files.write (path, text.getBytes ("UTF-8")) 행을 이해하지 못합니다. 변수 파일이 선언되지 않았습니까? – user2445678

+0

당신은'import java.nio.file.Files;'가 필요합니다. Java 7 이상을 사용하는 경우에만 작동합니다. – assylias

관련 문제