[英]Cannot create a folder and put a file inside this folder
我想創建一個文件夾並將所有生成的文件放在此文件夾中,所以我創建了此方法以在名為MyAppFolder
外部存儲中創建目錄,並在此文件夾中放置一個.nomedia
文件以避免媒體索引
static String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
static String baseAppDir = "MyAppFolder";
static String fileHider = ".nomedia";
public static void createFolder() {
try {
File mainDirectory = new File(baseDir + File.separator + baseAppDir);
if (!(mainDirectory.exists())) {
mainDirectory.mkdirs();
File outputFile = new File(mainDirectory, fileHider);
try {
FileOutputStream fos = new FileOutputStream(outputFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
} catch (Exception exc) {
System.out.println("ERROR: " + exc.toString());
exc.printStackTrace();
}
}
我正在模擬器上對此進行測試,但是無法正常工作,而且我不知道應該如何解決。
錯誤日志是:
java.io.FileNotFoundException: /storage/sdcard/MyAppFolder/.nomedia: open failed: ENOENT (No such file or directory)
02-12 20:11:51.758 4899-4899/com.myapp.testapp W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:409)
at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
02-12 20:11:51.758 4899-4899/com.myapp.testapp W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
02-12 20:11:51.758 4899-4899/com.myapp.testapp W/System.err﹕ at com.myapp.testapp.MyFileManager.createFolder(MyFileManager.java:272)
我也嘗試過
File outputFile = new File(mainDirectory, fileHider);
if(!outputFile.exists()) {
outputFile.createNewFile();
}
try {
FileOutputStream fos = new FileOutputStream(outputFile, false);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
同樣的結果
從Java FileOutputStream創建文件(如果不存在)表明您應該執行以下操作。 它確實聲明FileOutputStream如果不存在則應該能夠創建,但是如果失敗則將拋出異常,因此最好執行以下操作。 我猜這是一種更有效的方法嗎? 我不知道。 試一試! :-)
File yourFile = new File("score.txt");
if(!yourFile.exists()) {
yourFile.createNewFile();
}
FileOutputStream oFile = new FileOutputStream(yourFile, false);
確保您具有權限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
您的代碼可以在我的設備上運行。 如果您確實有此權限,則由於我們的Android系統之間的微小差異,您可以嘗試創建隱藏目錄,並在其中創建文件。
static String baseAppDir = ".MyAppFolder";
static String fileHider = "nomedia";
輸入“ ls -a”以檢查是否已真正創建了隱藏文件。 有時不要100%信任異常日志。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.