2015-07-20 43 views
-1

我想将一些数据存储在内存中的文件中。如果文件不存在,我需要创建该文件的子目录。为此,我试着在下面的一段代码如何在Android中不存在创建带有子目录的文件

String title = "test_file_title"; 
String rootDirectoryName = "." ; 
String userDirectoryName = "10000"; 
String filename = title + ".json"; 
filename = filename.replaceAll("\\s+","_"); 


File userTaskFile = new File(rootDirectoryName + File.separator + userDirectoryName + File.separator + filename); 

if (userTaskFile.getParentFile().exists() || userTaskFile.getParentFile().mkdirs()){ 
    try 
    { 
    userTaskFile.createNewFile(); 
    } 
    catch(IOException ioe) 
    { 
     ioe.printStackTrace(); 
    return; 
    } 
} 
else { 
    /** could not create directory and|or all|some nonexistent      parent directories **/ 
} 
FileWriter taskWriter = new FileWriter(userTaskFile); 
taskWriter.write("Test"); 
taskWriter.flush(); 
taskWriter.close(); 

我试着在普通的Java文件中的相同的代码,它工作正常。但是当我在Android中尝试相同的代码时,它给我提供了错误

java.io.FileNotFoundException: /MyAppStorage/10000/test_file_title.json: open failed: ENOENT (No such file or directory) 

这里有什么问题?有没有其他方式在Android中做同样的事情?

+0

'/ MyAppStorage'这是什么?你想写什么? – njzk2

回答

0

您正尝试在android的根目录中创建一个文件,您可能没有权限执行此操作。 下面的代码getExternalStorageDirectory()会给你,你可以创建文件的SD卡的路径:

myFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/"+ ".txt"); 

.txt指的是要创建的文件和第一属性是文件路径。

+0

我需要将文件存储在内部存储器中。有什么办法吗? – Jrd

+0

文件mydir = context.getDir(“mydir”,Context.MODE_PRIVATE); //创建一个内部目录; File fileWithinMyDir = new File(mydir,“myfile”); //在目录中获取文件。 FileOutputStream out = new FileOutputStream(fileWithinMyDir); //像往常一样使用流写入文件。 – WisdmLabs

+0

你可以在这里找到http://stackoverflow.com/questions/8124612/android-create-folders-in-internal-memory – WisdmLabs

相关问题