与往常一样,如果这很简单,我会道歉,我是一个没有受过正规教育的新手。我在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();
}
带有演示文件路径的图片:
答案 0 :(得分:0)
由于主要由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.");
}
}