Проблема создания файла в Android - PullRequest
6 голосов
/ 14 марта 2012

Я пытаюсь создать файл в каталоге, используя следующий код:

ContextWrapper cw = new ContextWrapper(getApplicationContext());
    File directory = cw.getDir("themes", Context.MODE_WORLD_WRITEABLE);
    Log.d("Create File", "Directory path"+directory.getAbsolutePath());
    File new_file =new File(directory.getAbsolutePath() + File.separator +  "new_file.png");
    Log.d("Create File", "File exists?"+new_file.exists());

Когда я проверяю файловую систему эмулятора из eclipse DDMS, я вижу созданный каталог "app_themes". Но внутри этого я не вижу "new_file.png". Журнал говорит, что new_file не существует. Может кто-нибудь, пожалуйста, дайте мне знать, в чем проблема?

С уважением, Анис

Ответы [ 3 ]

14 голосов
/ 14 марта 2012

Попробуйте это,

File new_file =new File(directory.getAbsolutePath() + File.separator +  "new_file.png");
try
  {
   new_file.createNewFile();
  }
  catch (IOException e)
  {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
Log.d("Create File", "File exists?"+new_file.exists());

Но будьте уверены,

public boolean createNewFile () 

Создает новый пустой файл в файловой системе в соответствии с информацией о пути, хранящейся в этом файле.Этот метод возвращает true, если он создает файл, и false, если файл уже существовал.Обратите внимание, что он возвращает false, даже если файл не является файлом (скажем, потому что это каталог).

4 голосов
/ 14 марта 2012

Создание экземпляра File не обязательно означает, что файл существует. Вы должны записать что-то в файл, чтобы создать его физически.

File directory = ...
File file = new File(directory, "new_file.png");
Log.d("Create File", "File exists? " + file.exists());  // false

byte[] content = ...
FileOutputStream out = null;
try {
    out = new FileOutputStream(file);
    out.write(content);
    out.flush();  // will create the file physically.
} catch (IOException e) {
    Log.w("Create File", "Failed to write into " + file.getName());
} finally {
    if (out != null) {
        try {
            out.close();
        } catch (IOException e) {
        }
    }
}

Или, если вы хотите создать пустой файл, вы можете просто позвонить

file.createNewFile();
0 голосов
/ 14 марта 2012

Создание объекта File не означает, что файл будет создан. Вы можете позвонить new_file.createNewFile(), если хотите создать пустой файл. Или вы могли бы написать что-нибудь к нему.

...