2012-02-12 49 views
1

如何在android上創建預分配的文件?像一個稀疏的文件?android-在下載文件之前爲文件預分配空間

我需要做一個應用程序,下載一個大文件,我想避免在下載開始時出現空間不足的錯誤。我的解決方案需要支持恢復和寫入內部和外部存儲。

我試過這裏寫的是: Create file with given size in Java 但由於某些原因,這些解決方案都沒有工作。

+1

不要只說對**某些原因沒有工作**,告訴你試過的代碼,你得到了錯誤,這樣你更喜歡得到答案 – Blundell 2012-06-08 20:37:48

+0

以及我已經嘗試了幾乎完全相同的代碼,我在鏈接中給出。 – 2012-06-08 20:43:34

+1

所以你應該在你的問題中以Android例子展示它。解釋爲什麼它不起作用或日誌顯示 – Blundell 2012-06-08 20:47:38

回答

3

這很奇怪。 現在工作正常。也許我已經以錯誤的方式對它進行了測試。

這裏的工作代碼,對於那些誰擁有與它的問題:

final String path=getFilesDir().getParent()+"/t.txt"; 
RandomAccessFile newSparseFile=null; 
try 
    { 
    new File(path).delete(); 
    newSparseFile=new RandomAccessFile(path,"rw"); 
    // create a 1MB file: 
    newSparseFile.setLength(1024*1024); 
    } 
catch(final Exception e) 
    { 
    Log.e("DEBUG","error while creating file:"+e); 
    } 
finally 
    { 
    if(newSparseFile!=null) 
    try 
     { 
     newSparseFile.close(); 
     Log.d("DEBUG","length:"+new File(path).length()); 
     } 
    catch(final IOException e) 
     { 
     Log.e("DEBUG","error while closing file:"+e); 
     } 
    } 
+0

充其量似乎不可靠,需要檢查setLength是否工作,如果沒有足夠的空間,我發現大小將保持爲0,或者它會比預期的小,但不佔用所有的磁盤空間。 – schwiz 2013-10-25 17:43:16

+0

@schwiz正確。它只是一個示例,所以它顯示了最小的代碼... – 2013-10-25 20:56:42

+0

那麼你發現它是完全可靠的還是完全沒用?我所做的任何測試都沒有被看好...... – schwiz 2013-10-25 20:58:11