2013-04-10 2 views
2

Я пытаюсь создать папку (и файл внутри нее) в папке, которая, скорее всего, будет защищена.Создать файл в защищенной папке

Вот мой код:

package me.pogostick29.audiorpg.data; 

import java.io.File; 
import java.io.IOException; 

import org.apache.commons.io.FileUtils; 

public class DataManager { 

    private DataManager() { } 

    private static DataManager instance = new DataManager(); 

    public static DataManager getInstance() { 
     return instance; 
    } 

    private File folder; 
    private File settings; 

    public void setup() throws IOException { 

     String foldername; 
     String osname = System.getProperty("os.name").toLowerCase(); 

     if (osname.startsWith("mac")) foldername = System.getProperty("user.home") + "/Library/Application Support/AudioRPG"; 
     else if (osname.startsWith("linux")) foldername = System.getProperty("user.home") + "/.AudioRPG/"; 
     else if (osname.startsWith("win")) foldername = System.getenv("APPDATA") + "\\.AudioRPG\\"; 
     else throw new RuntimeException("Unknown OS: " + osname); 

     folder = new File(foldername); 

     if (folder.exists()) { 

      boolean success = false; 

      try { success = folder.mkdirs(); } 
      catch (SecurityException e) { FileUtils.forceMkdir(folder); } 

      if (!success) throw new IOException("Could not create AudioRPG folder."); 
     } 

     settings = new File(folder, "settings.txt"); 

     if (!settings.exists()) { 

      boolean success = false; 

      try { success = settings.createNewFile(); } 
      catch (SecurityException e) { throw new IOException("Could not create settings file."); } 

      if (!success) throw new IOException("Could not create settings file."); 
     } 
    } 
} 

Когда я запускаю код (на Mac), я получаю это:

Исключение в потоке "основной" java.io.IOException: Нет такого файл или каталог на java.io.UnixFileSystem.createFileExcinally (родной метод) на java.io.File.createNewFile (File.java:883) на me.pogostick29.audiorpg.data.DataManager.setup (DataManager.java: 55) у меня.pogostick29.audiorpg.AudioRPG.main (AudioRPG.java:26)

Как создать папку/файл в этом месте?

ответ

0

Я использовал FileSystemView.getFileSystemView().getHomeDirectory();, чтобы получить домашний каталог. Он работает сейчас!

Смежные вопросы