2015-07-20 53 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

相關問題