Записать в SDCard файл не удалось без исключения - PullRequest
1 голос
/ 27 августа 2011

Я прошел через несколько тем о проблемах записи файлов SDcard, но не смог найти ответ, который помог бы мне.

  1. Я использовал
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

в моем манифесте для узла.

2. Следующий код создает файл, но не записывает в него. Писатель никогда не выбрасывает исключения. Когда я возвращаюсь к SDCard и вижу, что созданный файл имеет 0 кб. (что связано с функцией createnew)
3. SDCard показывает файл, созданный с этими разрешениями ---- rwxr-x (запись не для других)
4. Поведение одинаково на эмуляторе или устройствах Liek ASUS Pad или на устройствах Acer Iconia.

Как обычные приложения создают файлы с содержимым на SDCard из приложения Android?

if(isExternalStorageWritable()) {
    File testFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath(),Filename);
    try {
        if (testFile.createNewFile()) {
            Log.i(TAG + ": createSdcardFile","Empty file on external storage created");
            BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
                   openFileOutput(Filename, MODE_APPEND)));
            out.write(Content);
            out.close();
            Log.i(TAG + ": createSdcardFile","Content to new file created");
            created = true;
        }
    } catch(IOException e) {
        Log.e(TAG,"Unable to create/write to new file on external storage. Terminating testCDMReadPositive");
        Log.e(TAG,e.getMessage());
    }
}

4.Использование режима MODE_WORLD_WRITABLE дает тот же результат, то есть файл 0 КБ на SDCard


5. Любой, кто имеет опыт написания файлов на внешнем хранилище (/ mnt / sdcard), знает, как это сделать. Любая помощь или направление, высоко ценится. Спасибо

1 Ответ

1 голос
/ 27 августа 2011

Возможно глупое предложение, но вы удалили старый тестовый файл перед новым запуском?Потому что ваше предложение if предотвратит запись в файл, если он уже существовал.

...