2014-08-28 68 views
0

它工作正常,如果你寫幾個數據。但是,如果你寫了很多的數據(這將很長一段時間運行),它將失敗,:java.io.IOException: write failed: EBADF (Bad file number)使用存儲訪問框架

下面的代碼:

writeLargeDataToStream(new FileOutputStream(getContentResolver() 
     .openFileDescriptor(data.getData(), "w").getFileDescriptor())); 

回答

0

看來你需要不斷從垃圾ParcelFileDescriptor活着收集它放入一個局部場這樣的:

private ParcelFileDescriptor descriptor; 

而做到這一點:

descriptor = getContentResolver().openFileDescriptor(data.getData(), "w"); 
writeLargeDataToStream(new FileOutputStream(descriptor.getFileDescriptor())); 

當你使用完畢後,讓垃圾回收器知道它是可收集的:

descriptor = null;