与往常一样,我道歉,如果这是简单的,我是一个新手,没有正规的教育。我将于2018年秋季前往联合国大学。
我有一个密码管理器,它可以将其设置备份到一个文件中,这样用户以后就可以恢复它了。在测试此特性(以及相应的“还原”功能)时,我让它简单地将备份文件放在用户的下载目录中。这是没有问题的,我必须说,没有权限的问题。运行时权限和清单权限都是存在的,并且是功能性的。
当我试图将备份文件放在我自己创建的目录中时,问题就出现了。我希望把它放在用户文档目录中的一个名为"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();
}具有演示的文件路径的Pic:

发布于 2017-10-06 02:02:43
这个问题已经解决了,主要是通过CommonsWare的评论。我相信确切的修复方法是使用File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "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.");
}
}https://stackoverflow.com/questions/46595052
复制相似问题