2013-07-18 6 views
1

FileWriter를 만들 때 파일 위치의 전체 경로를 지정했지만 생성되는 파일을 보지 못했습니다. 또한 파일을 만드는 동안 오류가 발생하지 않았습니다.전체 경로와 함께 FileWriter 사용

여기 내 코드의 조각이다 :

public void writeToFile(String fullpath, String contents) { 
    File file = new File(fullpath, "contents.txt"); 
    if (!file.exists()) { 
     try { 
      file.createNewFile(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    try { 
     BufferedWriter bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile())); 
     bw.write(contents); 
     bw.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

fullpath에이 "D:/codes/sources/logs/../../bin/logs"입니다. 내 전체 디렉토리를 검색했지만 어디에서나 파일을 찾을 수 없습니다. 파일 이름 만 지정하면 [File file = new File ("contents.txt");], 파일의 내용을 저장할 수는 있지만 원하는 위치에 저장되지 않습니다.

어떻게하면 파일 내용을 원하는 위치에 저장할 수 있습니까?

업데이트 : file.getAbsolutePath()를 사용하여 전체 경로를 인쇄했으며 올바른 디렉토리 경로를 얻고 있습니다. [D : \ codes \ sources \ logs .... \ bin \ logs \ contents.txt] 그러나 디렉토리에서 파일을 찾을 때 찾을 수 없습니다.

+2

당신이 문자 그대로 가지고 있습니까

writeToFile("D:\\Documents and Settings\\me\\Desktop\\Development", "this is a test"); 

파일 구분 예를 작동하지 않는다 "../를 .." 거기에? 그렇다면'D :/codes/bin/logs'를 살펴볼 필요가있다. –

+0

또한 자바 7에서도 다음과 같이 할 수있다 :'Files.write (Paths.get (fullPath), contents.getBytes ("UTF- 8 "));' – assylias

+3

'createNewFile()'은 필요하지 않습니다. –

답변

0

경로 매개 변수에 후행 백 슬래시를 추가하여 경로가 디렉토리로 인식되도록하십시오. 예제 제공은 이스케이프 처리 된 백 슬래시를 사용하는 Windows OS에 대한 것입니다. 더 강력한 방법을 사용하려면 시스템에 대해 file.separator 속성을 사용하십시오.

작품

writeToFile("D:\\Documents and Settings\\me\\Desktop\\Development\\", 
       "this is a test"); 

String fs = System.getProperty("file.separator"); 
String path = fs + "Documents and Settings" + fs + "me" + fs 
     + "Desktop" + fs + "Development" + fs; 
writeToFile(path, "this is a test"); 
+0

file.getAbsolutePath()를 통해 절대 경로를 인쇄했는데 올바른 디렉토리 구조를 얻고 있습니다. 예 : D : \ 코드 \ 소스 \ 로그 \ .. \ .. \ 빈 \ 로그 \ contents.txt. –

+3

OP는 경로를 구성하기 위해'File' 객체를 사용하기 때문에 구분 기호를 가져오고 문자열로 전체 경로를 연결하지 않아도됩니다. –

+3

생성자'File (String parent, String child)'는 후행 (백 슬래시)을 신경 쓰지 않습니다 ([javadocs] 참조) (http://docs.oracle.com/javase/6/docs/api/java /io/File.html#File(java.lang.String,%20java.lang.String))). – creinig

관련 문제