2014-03-31 2 views
0

이전 버전이없는 경우에만 파일을 만들려고합니다.Java 파일이 자동으로 덮어 쓰시겠습니까?

이 내가 덮어 쓰기됩니다 믿고있는 것입니다 :

warningsFile = new File(plugin.getDataFolder(), "Warnings.yml"); 
warnings = YamlConfiguration.loadConfiguration(warningsFile); 

이 보조 클래스 (주요되지 않음)에 대한 생성자입니다. 서버가 다시로드 될 때마다 (서버용) 새 파일을 실행하고 덮어 씁니다. 이 문제를 해결할 더 좋은 방법이 있습니까? 먼저

답변

0
warningsFile = new File(plugin.getDataFolder(), "Warnings.yml"); 

if(!warningsFile.exists()) { 
    try { 
     warningsFile.createNewFile(); 
    } 
    catch (Exception e) { 
     Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.RED + "Couldn't create warnings.yml. Error: " + e.getMessage()); 
    } 
} 

warnings = YamlConfiguration.loadConfiguration(warningsFile); 
  • , 우리는 파일의 인스턴스를 인스턴스화합니다. 파일이 존재하지 않으면 우리는 그것을 만들려고합니다.
  • 이것이 실패하면 콘솔에 알립니다.
  • 마지막으로 우리는 파일에서 YAML 구성을로드합니다.

내가 만든이 동영상은 도움이 될 수 있습니다 :

plugin.saveResource("warnings.yml", false); 

이는 저장로드 :

http://www.youtube.com/watch?feature=player_embedded&v=_Rntj7r8jTQ

+0

필자는 원래 새 File(); 위에서 언급 한 것처럼 새로운 File()을 사용하여 파일을 만들지 않으시겠습니까? – Trevor

+0

아닙니다. 오라클의 JavaDocs에서 말하는'File' 클래스는'파일과 디렉토리 경로 이름의 추상적 표현 '입니다. 존재하지 않는 경로로'File'을 인스턴스화 할 수 있고 여전히 작동 할 것입니다. 그러나 폴더의'listFiles()'를 시도해도 폴더가 존재하지 않는다면 분명히 작동하지 않을 것입니다. 참조 http://docs.oracle.com/javase/6/docs/api/java/io/File.html – nrubin29

0

당신은 단순히 호출 할 수 있습니다 (이 서버 구현의 알고) jarfile 내부에서 warnings.yml (거기에 하나 넣어야 함) 및 false 지정 파일을 덮어 쓰지 않습니다.

관련 문제