2014-03-31 78 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配置。

這個視頻我做了可能會幫助:

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

+0

我原來剛剛新建File();不會像上面那樣新建File(),創建文件? – Trevor

+0

否。正如Oracle的JavaDocs所說,「File」類是「文件和目錄路徑名的抽象表示形式」。你可以用一個不存在的路徑實例化一個'File',它仍然可以工作。但是,如果您嘗試使用'listFiles()'文件夾並且該文件夾不存在,則顯然不起作用。 請參閱http://docs.oracle.com/javase/6/docs/api/java/io/File.html – nrubin29

0

(此服務器實現的瞭解)

您只需撥打:

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

這將載入保存從你的jar文件中的warnings.yml(你需要把一個),和特定的false不覆蓋文件。