2012-02-12 53 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