2014-02-13 3 views
0

Я хочу создать папку и поместить весь сгенерированный файл в эту папку, чтобы создать этот каталог для создания каталога во внешнем хранилище с именем MyAppFolder и поместить файл .nomedia в эту папку. папки, чтобы избежать массовой информации индексацииНевозможно создать папку и поместить файл в эту папку

static String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
static String baseAppDir = "MyAppFolder"; 
static String fileHider = ".nomedia"; 

public static void createFolder() { 
     try { 

      File mainDirectory = new File(baseDir + File.separator + baseAppDir); 
      if (!(mainDirectory.exists())) { 
       mainDirectory.mkdirs(); 
       File outputFile = new File(mainDirectory, fileHider); 
       try { 
        FileOutputStream fos = new FileOutputStream(outputFile); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } 
      } 
     } catch (Exception exc) { 
      System.out.println("ERROR: " + exc.toString()); 
      exc.printStackTrace(); 
     } 
    } 

Я проверяю это на эмуляторе, но не работает, и я не могу понять, как я должен это исправить.

Журнал ошибки:

java.io.FileNotFoundException: /storage/sdcard/MyAppFolder/.nomedia: open failed: ENOENT (No such file or directory) 
    02-12 20:11:51.758 4899-4899/com.myapp.testapp W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:409) 
    at java.io.FileOutputStream.<init>(FileOutputStream.java:88) 
    02-12 20:11:51.758 4899-4899/com.myapp.testapp W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:73) 
    02-12 20:11:51.758 4899-4899/com.myapp.testapp W/System.err﹕ at com.myapp.testapp.MyFileManager.createFolder(MyFileManager.java:272) 

Я также попытался с

File outputFile = new File(mainDirectory, fileHider); 
    if(!outputFile.exists()) { 
     outputFile.createNewFile(); 
    } 
    try { 
     FileOutputStream fos = new FileOutputStream(outputFile, false); 
    } catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

же результат

ответ

0

Убедитесь, что разрешение

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

Ваш код может работать на моем устройстве. Если у вас есть разрешение, из-за небольшого различия между нашими системами Android вы можете попытаться создать скрытый каталог и создать внутри него файл.

static String baseAppDir = ".MyAppFolder"; 
static String fileHider = "nomedia"; 

Введите «ls -a», чтобы проверить, действительно ли скрытый файл был создан. Не стопроцентно доверяйте журналу исключений.

0

От Java FileOutputStream Create File if not exists говорит, что вы должны сделать следующее. Он утверждает, что FileOutputStream должен иметь возможность создавать, если он не существует, но будет генерировать исключение, если он не работает, поэтому лучше сделать следующее. Наверное, это более уверенно, как он будет работать? Не знаю. Дать ему шанс! :-)

File yourFile = new File("score.txt"); 
if(!yourFile.exists()) { 
    yourFile.createNewFile(); 
} 
FileOutputStream oFile = new FileOutputStream(yourFile, false); 
+0

спасибо за ответ, см. Мой attemp в редакции .. все тот же результат – AndreaF

+1

У вас есть разрешения на SD-карту в манифесте? – CodeMonkey

+0

Ops Я забыл об этом XD. спасибо – AndreaF

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