我想创建一个文件夹并将所有生成的文件放在此文件夹中,因此我创建了此方法以在名为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();
}
相同的结果
答案 0 :(得分:0)
来自Java FileOutputStream Create File if not exists说您应该执行以下操作。它确实声明FileOutputStream应该能够创建,如果它不存在但会在它失败时抛出异常,所以最好这样做。我想这是一种更加确定的方式吗?我不知道。试一试! : - )
File yourFile = new File("score.txt");
if(!yourFile.exists()) {
yourFile.createNewFile();
}
FileOutputStream oFile = new FileOutputStream(yourFile, false);
答案 1 :(得分:0)
确保您拥有权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
您的代码可以在我的设备上运行。如果您拥有该权限,由于我们的Android系统之间存在一些微小差异,您可以尝试创建一个隐藏目录,并在其中创建一个文件。
static String baseAppDir = ".MyAppFolder";
static String fileHider = "nomedia";
输入“ls -a”以检查是否确实创建了隐藏文件。有时不要100%信任异常日志。