Android - предварительно выделить место для файла перед его загрузкой - PullRequest
2 голосов
/ 13 февраля 2012

как я могу создать предварительно выделенный файл на Android?что-то вроде разреженного файла?

Мне нужно создать приложение, которое будет загружать большой файл, и я хочу избежать ошибки нехватки места во время загрузки.мое решение должно поддерживать возобновление и запись как во внутреннюю, так и во внешнюю память.

я пробовал то, что написано здесь: Создать файл с заданным размером в Java , но по какой-то причине, ниэти решения сработали.

1 Ответ

3 голосов
/ 09 июня 2012

это странно. сейчас работает нормально. возможно, я проверил это неправильно.

вот рабочий код для тех, у кого с ним проблемы:

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);
      }
  }
...