尽管调用了mkdir,但没有创建文件夹

时间:2017-10-05 21:27:32

标签: java android directory

与往常一样,如果这很简单,我会道歉,我是一个没有受过正规教育的新手。我在2018年秋天去了Uni。

我有一个密码管理器,可以将其设置备份到文件中,因此用户可以在以后恢复它。当我测试此功能(以及相应的"还原#34;功能)时,我只需将备份文件放在用户的下载目录中。这没有问题,我必须说 权限没有问题 。运行时和清单权限都存在且功能正常。

当我试图将备份文件放在我自己制作的目录中时,出现了这个问题。我希望将它放在名为" PSync"的文件夹中。在用户的文档目录中。用于检查是否存在以及是否存在以创建它的代码正确运行,并且不会调用任何错误。它什么都不做。附件是相关代码,以及展示其使用路径的图片。应该注意的是,} else {运行中的语句不会创建文件。

 String dirPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).getPath().toString();
                    dirPath = dirPath + "/PSync";
                    Toast.makeText(Main.this, "Path: " + dirPath, Toast.LENGTH_SHORT).show();
                    File directory = new File(dirPath);

                    if (directory.isDirectory()) {
                    } else {
                        directory.mkdir();
                        Toast.makeText(Main.this, "Directory created.", Toast.LENGTH_SHORT).show();
                    }

带有演示文件路径的图片:

enter image description here

1 个答案:

答案 0 :(得分:0)

由于主要由CommonsWare发表评论,该问题已得到解决。我认为确切的解决方法是使用File(Environment.getExternalStoragePublicDirectory(Environme‌​nt.DIRECTORY_DOCUMEN‌​TS), "PSync"),其余的只是反映了良好的编程习惯,例如错误检查。

新代码是;

 //Checks if the specified directory exists.
                    File directory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "PSync");

                    //Saves this path to be used later.
                    String bkPath = directory.getPath().toString();

                    //Checks if the directory exists. If it does not, then it creates it.
                    if (directory.exists()) {
                    } else {
                        Boolean success = directory.mkdirs();
                        if (success) {
                          Log.e(directory.getPath(), "Directory successfully created");
                        } else {
                            Log.e(directory.getPath(), "Directory creation failed.");
                        }
                    }