ファイルを SD カードに書き込もうとすると、java.io.FileNotFoundException: /filename (Read-only file system)
例外が発生します。残念ながら、ここに投稿された多くの解決策はどれも役に立ちませんでした。アクセス許可を設定しましたが、外部ストレージは MEDIA_MOUNTED 状態です。これは問題のあるコードです:
Log.i("STORAGE", Environment.getExternalStorageState());
OutputStream fos = new FileOutputStream(Helpers.StripExtension(filePath) + ".blk");
fos.write(digest.getBytes());
fos.close();
filePath
ファイルティッカーから来ます。私がやろうとしているのは、選択したファイルから読み取り、同じ名前、異なる拡張子、およびその中にいくつかのものを持つ別のファイルを保存することです。
マニフェスト:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mypackagename"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:theme="@android:style/Theme.Black" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
ログキャット:
10-25 18:24:34.330: I/FILEPATH(1989): /mnt/sdcard/Untitled.txt
10-25 18:24:34.360: I/STORAGE(1989): mounted
10-25 18:24:34.360: W/System.err(1989): java.io.FileNotFoundException: /mnt/sdcard/Untitled.blk (Read-only file system)
10-25 18:24:34.360: W/System.err(1989): at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
10-25 18:24:34.360: W/System.err(1989): at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
10-25 18:24:34.360: W/System.err(1989): at java.io.FileOutputStream.<init>(FileOutputStream.java:94)
10-25 18:24:34.360: W/System.err(1989): at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
10-25 18:24:34.360: W/System.err(1989): at java.io.FileOutputStream.<init>(FileOutputStream.java:144)
avdではなく、実際のデバイスでこれを実行しています。デバイスの再起動とプロジェクトの再構築を試みました。OfficeSuite などのアプリケーションは、この場所に問題なく書き込むことができます。
デバイス: Android 2.3.7 (CyanogenMod 7) を搭載した ZTE Blade