我需要截断可移动 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 下的文件!?