2013-01-01 4 views
2

사용자가 로컬 컴퓨터에 만들 수있는 수준을 저장해야하는 Java 애플릿/응용 프로그램 게임을 만들었습니다. 애플릿 또는 애플릿으로 실행할 수 있기 때문에 애플릿/애플리 케이션을 말합니다. 현재 내가 파일 작성이 사용하고 있습니다 :로컬 컴퓨터에 파일을 저장할 위치를

BufferedWriter bf = new BufferedWriter(new FileWriter("Circles/levels/level.txt")); 
for (int i = 0; i < lines.size(); i++) { 
    bf.write(lines.get(i)); 
    bf.newLine(); 
} 

라인은 파일에 쓸 수있는 라인 ArrayList에 있습니다.

FileReader fr = new FileReader("Circles/levels/level.txt"); 
     BufferedReader bf = new BufferedReader(fr); 
     lines = new ArrayList<String>(); 
     while (true) { 
      String line = bf.readLine(); 
      if (line == null) { 
       break; 
      } 
      lines.add(line); 
     } 
     bf.close(); 

파일을 읽을 수 있습니다. 그것들은 try/catch 루프에 둘러싸여 있으며, 나는 단지 내가해야 할 것을 보여주고 있습니다.

이 작동하지만 다른 운영 체제에서 완전히 다른 위치로 보이며 응용 프로그램은 애플릿과 다른 위치에 저장합니다.

Java 프로그램이 실행되는 위치에 관계없이 레벨을 저장하는 절대 경로를 얻는 방법을 원합니다. 응용 프로그램으로 실행 한 경우와 같을 것입니다. 애플릿. 또한 모든 운영 체제 (linux, windows, mac)에서이 작업을 수행하는 것이 좋습니다.

+0

질문에 대한 답변이 없지만 레벨을 파일에 쓰거나 읽는 것이 훨씬 쉽고 세련된 방법은 [serialization]입니다 (http://www.tutorialspoint.com/java/java_serialization.htm).). 너의 인생을 더 쉽게 만드는 팁.) – Aaron

답변

5

애플릿이 데이터를 저장하기위한 위치가 전혀 없으므로 애플릿으로 실행하고 싶다면 매우 간단하게 피해야합니다. 애플릿 샌드 박스는 파일 시스템 액세스를 완전히 차단합니다. 대신 데이터를 저장하려면 서버를 호출해야합니다.

독립 실행 형 응용 프로그램에 대해서는 완전히 유감스럽게도 수용할만한 규정이 없다는 점에 유감입니다. 그러나 사용자의 홈 디렉토리에 dotfile 디렉토리를 작성하는 것은 종종 모두 리눅스, OSX와 Windows에서 허용 연습 간주됩니다

public static final File savedir = new File(new File(System.getProperty("user.home")), ".yourgame"); 

그런 다음, 그에서 파일 이름을 파생 :

FileReader fr = new FileReader(new File(savedir, "level.txt")); 

그것은 비록 하지만, Windows 프로그램이 정상적으로 수행하는 것은 아닙니다.

+0

고마워, 고마워! 컨벤션 외에도 애플릿이 데이터를 저장하지 않는 이유가 있습니까? 내 .jar 파일에 서명하면이 스크립트가 애플릿과 응용 프로그램 모두에서 작동하는 것 같습니다. – daboross

+0

Jar 파일에 서명 한 경우 실제로 작동 할 수 있습니다. 대부분의 애플릿이 서명되지 않은 상태로 실행되기 때문에 서명하지 않았다고 가정했습니다 (보안 대화 상자로 사용자를 괴롭히는 것을 피하기 위해). – Dolda2000

+0

@DaboRoss - 사용자가 인증서를 수락하지 않으면 애플릿이 의도 한대로 작동하지 않습니다. – wulfgarpro

관련 문제