2014-07-23 3 views
-1

자바에서 실행되는 응용 프로그램 (Mac 용)을 제작 중이며 자체 내용을 편집 할 수 있어야합니다. 어쨌든 응용 프로그램은 단지 영광스런 디렉토리 일 뿐이므로, 그 응용 프로그램을 사용하여 그 안에있는 내용을 변경할 수 있다고 가정했습니다. 그러나이 응용 프로그램은 배포 될 예정이며 사용자가 응용 프로그램을 배치 할 위치를 알지 못합니다. 현재 내가 작성한 모든 파일 참조는 File("path/from/user/to/application")을 사용하고 있지만 사용자 홈 드라이브에서 응용 프로그램을 찾을 수 있다고 가정합니다. .app 파일의 저장 위치를 ​​알지 못하는 방법이 있습니까? 응용 프로그램 내 내 현재 디렉토리 설정은 이것이다 :java - 응용 프로그램 자체를 어떻게 참조 할 수 있습니까?

app.app 
Contents 
|Info.plist 
|PkgInfo 
|---Resources 
| |icon.icns 
| 
|---MacOS 
| |JavaAppLauncher 
| 
|---Java 
    |---app.jar 
     |---package 
      |classFile.class 
      |---Folder 
       |FileToEdit.xml 

그래서 찾아 읽기/app.app가 어디 있는지 모른 채 (classFile.class에 저장) 자바 코드 내에서 FileToEdit.xml를 변경하는 방법이 있나요?

+2

"경로"를 얻을 수도 있지만 변경할 수있는 파일 시스템에 의해 백업된다는 보장은 없습니다. Java 응용 프로그램은 WAR 파일 또는 읽기 전용 네트워크에서 실행할 수 있습니다. 이 방법으로 작동하는 앱을 작성하는 것은 매우 약해질 수 있습니다. –

+1

응용 프로그램이 변경 될 수있는 데이터는 아마도 응용 프로그램 자체가 아니라'~/Library'의 어딘가에 속할 것입니다. – chepner

+0

내가하려는 것은 비교적 간단합니다. 예를 들어 Mac에서 파일 데이터를 앱 내부에 저장하는 게임을 보았습니다. 제가하려고하는 것은 이것과 비슷합니다. – zigzaugg

답변

0

당신은이 항아리에 포장에도 경우 프로그램 내에서 파일을 액세스 할 수 app.class.getClassLoader().getResourceAsStream("package/FileToEdit.xml")를 사용할 수 있습니다

이 참조. 보시다시피, 전체 경로를 사용할 필요가 없습니다. 리소스가 빌드 경로에 포함되어 있는지 확인하십시오. 파일을 읽는 것뿐입니다. 파일이 쓰기 가능하다는 보장은 없습니다.

또는

당신은 당신이해야 할 일을하기 위해 임시 파일을 사용할 수 있습니다. 그럴 가능성이 가장 높습니다. 당신은 임시 파일의 템플릿으로 원래 FileToEdit.xml 파일을 사용하고

File file = File.createTempFile("FileToEdit.xml", null); 

로를 만들고 해당 파일을 사용할 수 있습니다.

그러나 정말로 데이터를 유지하려면 올바른 데이터베이스를 사용해야합니다.

0

나는 프로젝트 폴더의 관점에서 볼 때 src 폴더에서 시작하는 경로를 지정하는 것이 필요하다고 말하고 싶다.

SRC/FileToEdit.xml

그럼 당신이 할 필요가 당신의 클래스 패스의 루트에의 이후 /FileToEdit.xml을 사용하는 것입니다

그래서 당신은 뭔가를해야합니다. Read xml file inside my project (src)

+0

프로젝트 내에서 그걸 잘 할 수는 있지만, 애플리케이션 내에서는 조금 다릅니다. 파일은 src 폴더가 아니라 실행 후 사용자 (~)로 기본 설정됩니다. – zigzaugg

관련 문제