Java 使用存储访问框架
如果您编写一些数据,它就可以正常工作。但是如果您写入大量数据(将运行很长时间),它将失败:java.io.IOException:write failed:EBADF(错误文件号) 代码如下:Java 使用存储访问框架,java,android,storage-access-framework,Java,Android,Storage Access Framework,如果您编写一些数据,它就可以正常工作。但是如果您写入大量数据(将运行很长时间),它将失败:java.io.IOException:write failed:EBADF(错误文件号) 代码如下: writeLargeDataToStream(new FileOutputStream(getContentResolver() .openFileDescriptor(data.getData(), "w").getFileDescriptor())); 您似乎需要将ParcelFil
writeLargeDataToStream(new FileOutputStream(getContentResolver()
.openFileDescriptor(data.getData(), "w").getFileDescriptor()));
您似乎需要将
ParcelFileDescriptor
放入如下本地字段,以防止垃圾收集:
private ParcelFileDescriptor descriptor;
这样做:
descriptor = getContentResolver().openFileDescriptor(data.getData(), "w");
writeLargeDataToStream(new FileOutputStream(descriptor.getFileDescriptor()));
使用完后,请使用以下命令让垃圾收集器知道它是可回收的:
descriptor = null;