リムーバブル SD カードのファイルを切り詰める必要があります。ストレージ アクセス フレームワーク (SAF) の制限により、ファイルに対してtruncate(someSize)を直接呼び出すことができず、使用を余儀なくされました。
ParcelFileDescriptor pfd = getContentResolver().openFileDescriptor(documentFile.getUri(), "rw");
FileOutputStream fos = new FileOutputStream(pfd.getFileDescriptor());
fileChannel = fos.getChannel();
fileChannel.truncate(someSize);
その結果、例外があります。
java.nio.channels.NonWritableChannelException
at java.nio.FileChannelImpl.checkWritable(FileChannelImpl.java:86)
at java.nio.FileChannelImpl.truncate(FileChannelImpl.java:460)
ファイル記述子をrwモードで開いた場合、上記のチャネルが書き込み可能でないのはなぜですか? Lollipop! の SAF でファイルを切り詰める別の方法はありますか?