Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用存储访问框架_Java_Android_Storage Access Framework - Fatal编程技术网

Java 使用存储访问框架

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

如果您编写一些数据,它就可以正常工作。但是如果您写入大量数据(将运行很长时间),它将失败:java.io.IOException:write failed:EBADF(错误文件号)

代码如下:

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;