こんにちは。
タイトル通りなのですが、実際にファイルが存在してもFile#exists()がfalseを返すという問題に悩んでます。
01.txt、02.txt、03.txt・・・という連番のファイルがあり、ファイルがいくつあるかは場合によりあらかじめ分かりません。
また、ファイルはもしかしたら03.txtの後、04.txtが無くて05.txt・・・と続くかもしれません。
現在やっていることは以下の通りです。
最初のファイルの場所をIntent.ACTION_OPEN_DOCUMENT+startActivityForResult()でURIとして取り出し、そのURIからファイルのパスの取得をしました。
取得できたパスは"/stroage/C459-1402/myfolder/01.txt"という形です。
01.txtの処理が終了したら"01.txt"の文字列を置換して"02.txt"にして"/stroage/C459-1402/myfolder/02.txt"のファイルの存在確認をして存在すれば開く、なければ今度は03.txtのファイルの存在確認・・・ということをしています。
問題になっているコードは抜粋ですが以下のような形です。
String filePath = "/stroage/C459-1402/myfolder/02.txt";
File txtFile = new File(filePath);
if (txtFile.exists()) {
//処理
}
txtFile.exists()の部分でどうやってもfalseが帰ってくるので処理がなされません。
ファイルの権限については、manifestに以下の文を追加してプログラム内でもrequestPermissions()しています。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
if (Build.VERSION.SDK_INT >= 23) {
String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE};
if (!hasPermissions(this, permissions)) {
ActivityCompat.requestPermissions(this, PERMISSIONS, READ_STORAGE_PERMISSION_REQUEST_CODE);
} else {
//do here
}
} else {
//do here
}
public boolean hasPermissions(Context context, String... permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
以上の方法でどうしても上手くいかないのですが、どうすればよいでしょうか?
どうかよろしくお願いします。