android - 在下载之前为文件预先分配空间

时间:2012-02-12 20:21:28

标签: android file space sparse-file

如何在android上创建预先分配的文件?类似于稀疏文件的东西?

我需要制作一个可以下载大文件的应用程序,并且我希望避免在下载开始时出现空间不足错误。我的解决方案需要支持恢复和写入内部和外部存储。

我已经尝试过这里写的内容: Create file with given size in Java 但出于某种原因,这些解决方案都没有奏效。

1 个答案:

答案 0 :(得分: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);
      }
  }