我正在尝试使用以下代码在目录中创建文件:
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”。 Log说new_file不存在。有人可以告诉我这是什么问题吗?
此致 ANEES
答案 0 :(得分:12)
试试这个,
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(因为它是一个目录,比方说)。
答案 1 :(得分: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();
答案 2 :(得分:0)
创建File对象并不意味着将创建该文件。如果要创建空文件,可以调用new_file.createNewFile()
。或者你可以写一些东西。