2012-02-21 3 views
1
File mediaDir = new File("media"); 
if (!mediaDir.exists()){ 
    mediaDir.createNewFile(); 
    mediaDir.mkdir(); 

} 

File f = new File("/data/data/com.test.image/files/media/Voucher.jpg"); 
f.createNewFile(); 
FileOutputStream fos = new FileOutputStream(f); 
fos.write(b); 
fos.close(); 

Попробуйте записать файл в телефоне встроенной памяти, но он выдает ошибку: java.io.IOException: только для чтения файловой системыjava.io.IOException: только для чтения файловой системы

ответ

2

Угадайка/данные/данные не являются внешними хранилищами. Для записи в каталог/data необходимо иметь разрешение root. Refer Data directory has no read/write permission in Android

+0

Я добавил в AndroidManifest.xml –

+0

ваш телефон укоренен? – user936414

+0

Если он не внедрен, данные не будут иметь разрешения на запись. Обратитесь к http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app – user936414

0

Использование mediaDir.mkdirs(); вместо mediaDir.mkdir(); также вы должны потребовать WRITE_EXTERNAL_STORAGE разрешение

+0

такая же проблема..и выдает ту же ошибку .... я даже добавил

0

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

Чтобы создать каталог, специфичный для вашего приложения, используйте getDir(String dirName, int mode) вместо new File("media"). Позвонив только, вы можете создать медиа-каталог и использовать его.

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

+2

Хотя вы приняли ответ, я не думаю, что это то, что вы искали./data/data - это каталог, в который устанавливаются все пакеты приложений. Ваш пакет приложений также будет поддерживаться только в этом каталоге (/ data/data /). Поэтому давайте скажем, что ваше имя пакета ** com.test.image **, в этом случае будет создан ваш медиа-каталог, чей путь будет /data/data/com.test.image/app_media. Поэтому, если вы используете метод активности/контекста getDir, вы можете напрямую обращаться к этой папке/данных/данных и писать файл. Нет необходимости писать разрешения в манифесте. – AndroDev

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