2011-01-08 3 views
5

.jar 내에있는 .xml 파일을 열고 편집하려면 어떻게해야합니까? Java로 .jar 파일을 열고 편집 하시겠습니까?

나는 당신이 할 수 있다는 것을 알고

...

InputStream myStream = this.getClass().getResourceAsStream("xmlData.xml"); 

그러나 당신이 xmlData.xml을 열 것입니다 방법, 파일을 편집하고 .JAR에 저장? 이것을 알고 유용 할 것입니다. .jar ... 외부의 파일을 편집하고 싶지 않고 응용 프로그램이 전체 시간 실행을 유지해야합니다!

고맙습니다!

+0

xml 파일을 xmlData.xml과 동일한 jar 파일 내부에서 수정하는 응용 프로그램입니까? – Enrique

+0

그들은 동일합니다 ... .jar 안에 .xml 파일이 있습니다. .jar 파일을 실행하고 .jar 응용 프로그램에서 .xml 파일을 편집하려고합니다. – Zeveso

답변

3

Jar 파일은 파일 접미사가 다른 .zip 파일과 내용의 명명 규칙입니다. 따라서 내용을 읽고 쓰려면 java.util.zip 아래의 클래스를 사용하십시오.

내용을 수정하는 것은 클래스 로더가 내용을 적절하게 캐시 할 수 있으므로 실행중인 시스템에 영향을 미치지는 않습니다.

이렇게 실제로 달성하려는 내용에 대해 자세히 알고있는 것이 좋습니다. Jar 파일의 내용을 수정하는 것은 복잡하고 오류가 발생하기 쉬운 접근법처럼 들립니다. ...

+0

모두 저장하고 싶습니다. .jar 파일의 .xml 파일에있는 내 데이터 ... 이름이 이메일과 같은 것일 것입니다 – Zeveso

+0

.jar 파일 내의 XML 파일에 데이터를 저장하고 있습니까? 앱을 다시 배포해야하는 경우 어떻게됩니까? XML을 계속 사용하려고한다고 가정합니다. 응용 프로그램 외부에서 .xml 파일을 유지하고 (아마도 .properties 파일 또는 Spring을 통해) 구성을 사용하여 해당 xml 파일의 파일 시스템에서 위치를 설정해야합니다. 바이너리 무결성과 같은 것을 보장하기 위해 .jars의 내용을 혼자 남겨 두어야합니다. – whaley

+1

나는 그것이 정말로 깨끗하게 할 수 있다고 생각하지 않는다. 먼저 jar 파일을 찾는 문제를 해결해야합니다 (클래스 로더 트리를 걷거나 java 프로세스 시작 params 검사). 그런 다음 java.util.zip을 사용하여 파일의 압축을 풀고 파일을 편집하고 다시 압축 한 다음 클래스 로더 캐싱이 업데이트 된 파일을 읽을 수 있도록기도하십시오. 해야하지 마 :). –

1

GUI가 있고 웹 사이트/서버에 액세스 할 수 있다면 JWS가 답이 될 수 있습니다. JWS 앱에서 사용할 수있는 JNLP API입니다. PersistenceService와 같은 서비스를 제공합니다. 다음은 작은 demo. of the PersistenceService입니다.

아이디어는 JWS 지속성 저장소에서 XML을 확인하는 것입니다. 거기에 없으면 거기에 쓰거나 그렇지 않으면 캐시 된 버전을 사용하십시오. 변경된 경우 상점에 새 버전을 작성하십시오.

데모. 셧다운시 상점에 편지를 쓰고 시작시 읽습니다. 그러나 메뉴 항목, 타이머 등에서 호출 할 수없는 이유는 없습니다.

관련 문제