2014-01-31 221 views
2

我想创建新的文件,而是会创建目录......我尝试了许多检查和方式。在我的应用程序的不同部分创建新的文件工作正常...目录的创建,而不是文件

public void copyDatabaseFromAssets() throws IOException { 
      InputStream inputStream = app.getAssets().open(Static.DATABASE_FILE_NAME); 
      File directory = new File(getInternalDatabaseFolder()); 
      boolean exist = directory.exists(); 
      boolean isDirecotry = directory.isDirectory(); 
      boolean isFile = directory.isFile(); 
      if(!directory.exists())directory.mkdirs(); 
      File targetFile = new File(directory.getAbsolutePath(),Static.DATABASE_FILE_NAME); 
      boolean exist2 = targetFile.exists(); 
      boolean isDirecotry2 = targetFile.isDirectory(); 
      boolean isFile2 = targetFile.isFile(); 
      boolean created = targetFile.createNewFile(); 
      FileTool.copyDataBaseFromAssets(inputStream,targetFile); 
     } 

调试 - >

directory = /data/data/***/databases 
exist = true  
isDirectory = true 
isFile = false 

targetFile = /data/data/***/databases/database.sqlite 
exist2 = true  
isDirectory2 = true 
isFile2 = false  
created = false 

错误 - >

java.io.FileNotFoundException: /data/data/***/databases/database.sqlite: open failed: EISDIR (Is a directory) 
+0

您确定您正在查看'isDirecotry2'和'isFile2'吗? –

+0

尝试移除'boolean created = targetFile.createNewFile();'根据您在'copyDataBaseFromAssets'中使用的内容,文件可能会自动创建。 –

+0

我编辑的问题,调试很好 –

回答

1

exist2指示它已经存在的nd isDirectory2它是一个文件夹。尝试删除database.sqlite并再次运行相同的代码

+0

我已经创建了一个文件,然后我忘了删除这个不好的目录.. thx给你,以及 –

相关问题