2010-11-17 5 views
3

그래서 Java에 이상한 문제가 있습니다.절대 경로 대신 상대 경로를 사용하는 방법은 무엇입니까?

글쓰기 파일을 읽고있어 경로가 중요합니다. 모든 파일을 상대 경로 (즉, 클래스 및 Java 파일의 나머지 폴더에 있음)에서 쓰고 읽으 려합니다.

나는과 같이 파일을 쓸 :

FileWriter fw = new FileWriter(outfile,true); 
fw.write(data); 
fw.close(); 

곳 OUTFILE는 'out.txt'(우리는 출력에 가고 싶은 파일, 즉 이름) 같은 것입니다.

문제는 파일이 다른 파일의 경로 대신 /home/me/에 생성된다는 것입니다.

내가 잘못 했나요? 또는 상대 디렉토리에 파일을 저장하려면 어떻게해야합니까?

+3

상대 * 무엇에 *? –

+1

시간? http://en.wikipedia.org/wiki/Special_relativity –

+0

아마 친척이 잘못된 용어 일 수 있습니다. 내 작업 디렉토리 (즉, 파일이 빌드 된 곳, 실행되는 곳 등)에있는 것을 의미합니다. – Blackbinary

답변

4
FileWriter fw = new FileWriter("./" + outfile,true); 

또는

FileWriter fw = new FileWriter("~/" + outfile,true); 

나는 그것을 시도 할 것입니다.

+0

이 하나의 작품 : FileWriter fw = new FileWriter ("./"+ outfile, true); –

3

Java는 현재 작업 디렉토리를 기준으로 파일을 저장합니다. 프로그램을 실행할 때 홈 디렉토리 안에 있습니까?

파일을 Java 파일의 위치와 관련하여 저장하고 이 아닌 경우 현재 작업 디렉토리가이면 절대 경로를 얻기 위해 해당 디렉토리를 찾아 앞에 추가해야합니다.

+0

그게 문제였던 것 같아요. 폴더에있는 모든 파일을 컴파일 중이었습니다 (그래서 폴더 안의 단계 대신 홈 디렉토리에있었습니다). 패키지를 사용했습니다.그것을 실행하기위한 AClass. 그래서 나는 그 대답을 추측한다. 감사. – Blackbinary

0

는 명령 줄에서 user.dir 속성을 설정하거나 당신의 Wnt 모든 것이 상대적으로 디렉토리에서 실행 당신이 전화 즉에서 프로그램을 실행할 경우

4

작업 디렉토리는 (CD-보내고에 의해) 자바 YourClass, 그래서 당신이 실행중인 클래스에 상대적인 파일을 작성하려면 현재 디렉토리를 알고 거기에서 상대 경로를 추가해야합니다 예 :

그래서 당신은 클래스 test.YourClass이 있고 즉 소스 루트에서 응용 프로그램을 실행하는 경우

자바 test.YourClass

당신은 당신의 클래스 파일에서있는 디렉토리에 대한 절대 경로를 찾을 수 있습니다 하여이 user.dir 시스템 속성과 클래스의 패키지 이름은 다음과 같이

public class YourClass { 

public void printPath() { 
    String path = String.format("%s/%s", System.getProperty("user.dir"), this.getClass().getPackage().getName().replace(".", "/")); 
    System.out.println(path); 
} 

}

관련 문제