2012-06-26 4 views
0

Эта функция создает файл, но я не могу понять, где находится файл, и если у кого-то есть решение создать файл в определенном каталоге из внешний накопитель очень приветствуется :) спасибоГде будет файл, созданный в android, если я это сделаю

private void writeFileToInternalStorage() { 
    String eol = System.getProperty("line.separator"); 
    BufferedWriter writer = null; 
    try { 
     writer = new BufferedWriter(new OutputStreamWriter(openFileOutput("myfile", MODE_WORLD_WRITEABLE))); 
     writer.write("This is a test1." + eol); 
     writer.write("This is a test2." + eol); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } finally { 
     if (writer != null) { 
     try { 
      writer.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     } 
    } 
} 
+0

он будет создан во внутреннем хранилище, так как имя функции указано –

ответ

2
openFileOutput

всегда создавать файлы в локальном каталоге проекта то же самое, что возвращается getFilesDir()

Ваш файл будет создан в /data/data/your.package.name/

Длянапишите в хранилище extrnal, вам нужно будет сделать что-то вроде этого.

File sdCard = Environment.getExternalStorageDirectory(); 
File dir = new File (sdcard.getAbsolutePath() + "/MyDir"); 
dir.mkdirs(); 
File file = new File(dir, "filename"); 

FileOutputStream f = new FileOutputStream(file); 
... 

Наконец, не забудьте включить

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

в манифесте.

0

Он будет создан во внутренней папке: /data/data/com.package.name/ Вы не можете получить доступ к этой папке с помощью браузера файлов.

Если вы хотите, чтобы легко получить доступ к файлу, вы можете попробовать создать его на SD-карте:

/*...*/ 
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
String fileName = baseDir + "/"+ "myFile.txt"; 
FileOutputStream writer = null; 
try { 
    writer = new FileOutputStream(fileName); 
    writer.write("This is a test1." + eol); 
    /*...*/ 
+0

Если я так делаю это, то получаю исключение нелегального аргумента. MyFile.txt содержит разделитель путей – exilonX

+0

true, произошла ошибка. Я изменил eol на «/». проверить мой отредактированный ответ – Caner

+0

почти то же самое теперь Исключение незаконного аргумента /mnt/sdcard/myFile.txt содержит разделитель путей, поэтому ... что я могу сделать? – exilonX

0

для запроса

  • Где будет файл, созданный

его будет создаваться во внутреннем хранилище в качестве имени функции и будет выглядеть как /data/data/yourApp_package_as_in_manifest/(может видеть в DDMS)

для запроса

  • если кто-то имеет решение, чтобы создать файл в определенном каталоге от внешнего хранения очень приветствуется

согласно ссылке Write a file in external storage in Android ...... ...

** Method to check whether external media available and writable. This is adapted from 
     http://developer.android.com/guide/topics/data/data-storage.html#filesExternal */ 

    private void checkExternalMedia(){ 
      boolean mExternalStorageAvailable = false; 
     boolean mExternalStorageWriteable = false; 
     String state = Environment.getExternalStorageState(); 

     if (Environment.MEDIA_MOUNTED.equals(state)) { 
      // Can read and write the media 
      mExternalStorageAvailable = mExternalStorageWriteable = true; 
     } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
      // Can only read the media 
      mExternalStorageAvailable = true; 
      mExternalStorageWriteable = false; 
     } else { 
      // Can't read or write 
      mExternalStorageAvailable = mExternalStorageWriteable = false; 
     } 
     tv.append("\n\nExternal Media: readable=" 
       +mExternalStorageAvailable+" writable="+mExternalStorageWriteable); 
    } 

    /** Method to write ascii text characters to file on SD card. Note that you must add a 
     WRITE_EXTERNAL_STORAGE permission to the manifest file or this method will throw 
     a FileNotFound Exception because you won't have write permission. */ 

    private void writeToSDFile(){ 

     // Find the root of the external storage. 
     // See http://developer.android.com/guide/topics/data/data- storage.html#filesExternal 

     File root = android.os.Environment.getExternalStorageDirectory(); 
     tv.append("\nExternal file system root: "+root); 

     // See https://stackoverflow.com/questions/3551821/android-write-to-sd-card-folder 

     File dir = new File (root.getAbsolutePath() + "/download"); 
     dir.mkdirs(); 
     File file = new File(dir, "myData.txt"); 

     try { 
      FileOutputStream f = new FileOutputStream(file); 
      PrintWriter pw = new PrintWriter(f); 
      pw.println("Hi , How are you"); 
      pw.println("Hello"); 
      pw.flush(); 
      pw.close(); 
      f.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
      Log.i(TAG, "******* File not found. Did you" + 
        " add a WRITE_EXTERNAL_STORAGE permission to the manifest?"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     tv.append("\n\nFile written to "+file); 
    } 

, а также добавить разрешение WRITE_EXTERNAL_STORAGE к манифесту

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