4

Я пытаюсь создать файл в директории, используя следующий код:Проблема создания файла в андроид

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()); 

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

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

ответ

9

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

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, даже если файл не является файлом (потому что это каталог, скажем).

0

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

4

Создание экземпляра 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(); 
Смежные вопросы