問題の説明
この例外は、I/O に障害が発生した場合に発生します。 存在しないファイル、読み取りおよび書き込み権限の欠如、エンコード エラー、EOF の返却、I/O の中断、無効な JSON および URL 形式など、複数の原因が考えられます。
解決策
この例外は、存在しないファイル、読み取りおよび書き込み権限の欠如、エンコード エラー、EOF の返却、I/O の中断、無効な JSON および URL 形式など、多くの原因によって発生する可能性があります。 例外をキャッチして処理することをお勧めします。
サンプル コード
例 1
java.io.IOException: open failed: EACCES (Permission denied)
ファイル パスを確認し、外部ストレージ上のファイルの読み取りおよび書き込み権限を付与します。
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
例 2
java.io.IOException: open failed: ENOENT (No such file or directory)
try-catch 文を追加して例外を処理します。
public void readFile(String filePath) {
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader(filePath));
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
参照
https://developer.android.com/training/permissions/index.html (権限の使用に関するドキュメント)
https://developer.android.com/reference/android/Manifest.permission.html (権限の分類に関するドキュメント)
https://www.mkyong.com/java/how-to-read-file-from-java-bufferedreader-example/
https://developer.android.com/reference/java/io/IOException.html
https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous (一般的な権限と危険な権限)
https://developer.android.com/training/permissions/requesting.html#perm-check (承認方法)