2013-09-21 3 views
0

현재 저는 Zork의 전설 (개발 제목)이라는 제목의 게임을 작성 중입니다. 주로 코드 작성과 Java 학습에 더 많은 시간을 할애하고 있습니다. 그러나 나는 특정한 일에 매달렸다. 포함 된 폴더를 내 컴퓨터, 다른 사람의 컴퓨터 또는 플래시 드라이브의 아무 곳으로나 복사하여 작동하도록하고 싶습니다. 프로그램을 Jar 파일로 컴파일 할 때 코드가 필요한 파일 (예 : 음악 또는 스프레드 시트)을 사용할 수 있도록 폴더의 경로를 지정해야합니다. 나는 시도했다 다음 : 이클립스 ("/ 미디어/MOTHLACHAIN ​​/ LegendOfZork/자원 /"내 작업 공간으로 사용하는 엄지 드라이브입니다) 완벽 실행,하지만 난 내 적절한 경로를 줄 것이다 String dir = System.getProperty("user.dir") + "/resources/";

jar 파일을 빌드하고 실행하면 FileNotFoundException으로 인해 실행되지 않습니다. 터미널에서 "java -jar LegendOfZork.jar"라고 입력하면 파일을 참조하는 클래스가 포함되지 않은 경우 작동하지만 찾고있을 때 "/home/viktor/resources/Weapons.xls"를 찾고 있다고합니다. "/home/viktor/LegendOfZork/resources/Weapons.xls"또는 내 바탕 화면에서 실행중인 경우 "/home/viktor/Desktop/LegendOfZork/resources/Weapons.xls"등을 찾아야합니다. 내 프로그램의 폴더 계층 구조는 다음과 같습니다
1 LegendOfZork
- 오디오
- 음악
이 - 소리
-
빈 - 자원
폴더의 위치를 ​​얻으려면 어떻게해야합니까?

jar 파일이 포함되어있는 곳 LegendOfZork 폴더가 될 것이다, 어디에서나 프로그램을 작성하고 싶은데 리소스는 스프레드 시트에 액세스하려는 위치에 있어야합니다.
도움을 주시면 감사하겠습니다. 많이 고맙습니다! ...

public class CurrentPath extends java.io.File 
{ 
    private static String path = "."; 
    CurrentPath() 
    { 
     super(path); 
    } 
    String getResult() 
    { 
     return path; 
    } 
    public static void main(String[] args) 
    { 
     CurrentPath cpp = new CurrentPath(); 
     //get path with cpp.getResult(); 
    } 
} 

답변

1

사용하려고하면 현재 작업 디렉토리에 대한 참조를 얻을 것이다

File file = new File("."); 

을 :

+0

상대 경로는 당신이에서 자바를 실행 한 디렉토리에 따라 작동 궁금 왼쪽 해요, 당신의 경우에 그것은 ~이 될 것입니다. 디렉토리 구조를 잘 이해하고 있다고 가정하고/home/viktor/Desktop/LegendOfZork로 디렉토리를 변경하고 Jar을 직접 실행하십시오 (java -jar LOZs.jar). – MadProgrammer

+0

걱정하지 마시고 시간을내어 알아 내십시오.) – MadProgrammer

0


는이 같은 것을 사용, 현재 디렉토리를 얻으려면. 당신이 절대 경로를 알고 싶다면 다음과 같은 것을 사용

...

file.getAbsoluteFile(); 

또는

file.getCanonicalFile() 

은 자세한 내용

이제

에 대한 JavaDocs을 참조 File을 사용하여 다음을 수행 할 수 상대 경로를 정의하십시오. 그래서 File resources = new File("resources");과 같은 것은 ./resources에 대한 추상 경로를 만듭니다. 자, 이것은 프로그램의 실행 지점과 분명히 관련이 있으므로,이를 고려해야 할 수도 있습니다.

그래서 예를 들어

+ LegendOfZork 
    ...jar files... 
+ audio 
    + music 
    + sounds 
+ bin 
+ resources 

.. 당신이 hirarcy이 같이 보입니다 폴더를 가정하고 응용 프로그램이 다음 audio 디렉토리에 대한 액세스를 얻으려면, LegendOfZork 디렉토리의 맥락에서 시작되었다, 당신은해야합니다 같이해라.

예를 들어
File audio = new File("../audio"); 
File music = new File(audio, "music"); 
File sounds = new File(audio, "sounds"); 

...

+1

내가 (".") 파일 currentPath = 새로운 파일'뭐가 잘못 됐는지' – MadProgrammer

관련 문제