无法创建文件夹并将文件放在此文件夹中

时间:2014-02-13 01:20:03

标签: android android-file

我想创建一个文件夹并将所有生成的文件放在此文件夹中,因此我创建了此方法以在名为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();
  }

相同的结果

2 个答案:

答案 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%信任异常日志。