2013-04-12 2 views
0

표준 응용 프로그램 데이터 저장소 디렉토리에 옵션과 LWJGL jar를 저장하는 Java 게임을 만들었습니다 (Windows의 경우 C : \ Users \ user \ AppData \ roaming \ application, ~ /이라고 생각합니다). Linux의 응용 프로그램, ~/Library/Preferences for Mac). 현재 System.getProperty (os.name)를 사용하고 있고 올바른 파일 경로 (system.getProperty (user.home)를 사용하고 올바른 파일 경로를 추가하는)를 선택하기 위해 if-else를 사용합니다. 그러나 if-else는 OS 이름에서 Windows, Mac 또는 Linux를 찾지 못하기 때문에 일부 이상한 OS에서는 작동하지 않을 수 있습니다. 또한 일반적으로이 작업을 수행하는 것은 매우 나쁜 방법입니다 (if- 그렇지 않으면 Windows 또는 Mac이 아닌 경우 OS는 Linux라고 가정합니다). 응용 프로그램 데이터와 LWJGL jar를 올바른 경로에 저장하는 Minecraft를 디 컴파일하려고 시도했지만 코드가 난독 화되었습니다. 내가 이것을 할 수있는 더 좋은 방법이 있습니까, 아니면 os.name에 if-else를 고수해야합니까?플랫폼 독립적 인 파일 저장소 Java

+0

이러한 파일을 특정 위치에 저장해야합니까? – Smit

+1

참고 : 1) ['Preferences'] (http://docs.oracle.com/javase/7/docs/api/java/util/prefs/Preferences.html) * "이 클래스를 사용하면 응용 프로그램에서 응용 프로그램을 저장하고 검색 할 수 있습니다 사용자 및 시스템 환경 설정 및 구성 데이터.이 데이터는 구현 종속적 인 저장소에 지속적으로 저장됩니다. "* 2) JWS의 [PersistenceService] (http://pscode.org/jws/api.html#bs) 앱. 3) 애플릿을위한 쿠키. –

답변

1

구성 기본 설정에는 Java 기본 설정 API가 있습니다.

다른 파일의 경우이 문제에 대한 해결책을 찾지 못했습니다. 가장 좋은 해결책은 현재 user.home 속성을 기반으로하는 대체 방식을 사용하여 OS 유형에 파견하는 것입니다.

Linux/Unix (Mac 아님)의 경우 XDG Base Directory specification을 기릴 수 있습니다.

0

해야하는없이 사방이 작품, 즉 같은 아닌 경로 경우 - 다른-경우 :

String userHome = System.getProperty("user.home"); 
if (!userHome.endsWith("/")) { 
    userHome += "/"; 
} 

String targetPath = userHome + ".myapp/settings.properties"; 
+0

이것은 모든 곳에서 작동하지만, 기본 설정 저장 위치 (예 : Windows의 경우 user.home/AppData/roaming/appName /)와는 맞지 않습니다. –

관련 문제