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模式打开文件描述符,为什么上述通道不可写?还有另一种方法可以在棒棒糖上截断 SAF 下的文件!?

4

0 回答 0