2013-04-29 5 views
0

저는 Java로 게임을 쓰고 있습니다. 게임을 저장하고 싶습니다. XML 문서를 zip 파일로 저장하려고합니다. 내가 알고 싶은 것은 사용자가이 파일을 편집하거나 찾을 수 없도록 투명하게 수행 할 수있는 방법인지 여부입니다. 나는 파일을 숨김으로 만드는 것에 대해 생각해 왔지만, 그렇게하려면 더럽고 추악한 방법처럼 보인다. 숨겨진 파일에 대해 가장 좋아하는 점은 시스템간에 호환되지 않는 것입니다. 어쨌든 파일을 항아리에 저장하고 읽을 수 있다면 똑같이 받아 들일 수 있습니다. 또한 숨겨진 파일을 만들기 위해 Java에서 좋은 방법처럼 보이지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.애플리케이션 데이터를 투명하게 저장합니다.

+0

개체 직렬화를 사용하면 어떨까요? 결과는 편집하기가 어렵지만 불가능하지는 않습니다. –

+0

나도 알아하지만 저장 폴더를 만들어야 만하고 버전 간 호환성에 대해 걱정할 필요가있다. 한 번에 한 개 이상의 객체를 동시에 작성하고 있지만 XML을 사용하여 XMLEncoder를 사용하여 내 객체를 직렬화하고 모두 저장한다. XML 파일을 zip으로 변환합니다. –

+0

XML 형식을 사용할 수는 있지만 소금에 절인 해시를 넣으면 플레이어가 직접 편집 할 수 없으므로 잠재적으로 손상시킬 수 있습니다. – jeff

답변

0

내가 알고 싶은 것은 사용자가이 파일을 편집하거나 찾을 수 없도록 투명하게 처리 할 수 ​​있는지 여부입니다.

궁극적으로, 아니오.

로컬 컴퓨터에 상태를 저장하는 작업은 궁극적으로 리버스 엔지니어링 될 수 있으며 권한있는 사용자가 해당 상태를 검색 할 수 있습니다.

그러나 사람들이 "속이기"어렵게 만들 수있는 다양한 일이 있습니다. 예를 들어 파일을 암호화하거나 시드 된 해시를 생성하여 "땜질"을 감지 할 수 있습니다. 자바 7에서 파일을 숨기기


은 간단하다 :

Path path = FileSystems.getDefault().getPath("directory", "hidden.txt"); 
Boolean hidden = path.getAttribute("dos:hidden", LinkOption.NOFOLLOW_LINKS); 
if (hidden != null && !hidden) { 
    path.setAttribute("dos:hidden", Boolean.TRUE, LinkOption.NOFOLLOW_LINKS); 
} 

가 (기술 : http://javarevisited.blogspot.com/2012/01/how-to-hide-file-java-program-example.html) 자바의 이전 버전에

외부 Windows 응용 프로그램을 호출하거나 네이티브 라이브러리를 호출 할 필요 그것을하기 위해. 그러나 참고 :

  • "숨겨진"파일은
  • 는 서로 다른 플랫폼에서 다르게 작동보고 귀찮게하지 않은 사용자로부터 숨겨져 있습니다; 예 : Linux/Unix 기반 시스템의 경우 "숨김"은 파일 이름이 "."로 시작한다는 것을 의미합니다.
관련 문제