2

リムーバブル 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 でファイルを切り詰める別の方法はありますか?

4

0 に答える 0