【发布时间】:2020-11-25 12:14:28
【问题描述】:
我的问题是我无法在插入 Android 便携式设备的 SD 卡上创建目录。
下面是我要开始工作的 Java 代码:我正在尝试在 /storage/BF4F-1107/ 下创建目录 sable:
public class AnActivity extends AppCompatActivity
{
private static final int N_CREATE_DIRECTORY = 1;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// SD card
String s_sdCardStorage = "/storage/BF4F-1107/";
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("file/*");
intent.putExtra(Intent.EXTRA_TITLE, s_destFilePath);
startActivityForResult(intent, N_CREATE_DIRECTORY);
// HERE
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == N_CREATE_DIRECTORY)
{
if(data != null)
{
Uri uri = data.getData();
DocumentFile docFileSDCardStorage = DocumentFile.fromSingleUri(this, uri);
try
{
DocumentFile docFileDir = docFileSDCardStorage.createDirectory("sable");
}
catch(UnsupportedOperationException exn)
{
System.out.println(exn.getMessage());
}
}
}
}
}
会发生什么:
-
onCreate()中的代码被执行。 - 然后程序块在
// HERE。 - 在便携式设备上,出现一个显示
/storage/BF4F-1107/的“对话框”和一个我“按下”的按钮Save。 - 一旦“按下”,
onActivityResult()中的代码就会被执行。
但是结果是/storage/BF4F-1107/下的目录sable没有创建。
并且执行路径通过 catch 子句,引发异常 UnsupportedOperationException 并在 System.out.println(exn.getMessage()); 处打印 null。
编辑2:在/storage/BF4F-1107/下创建一个空文件_storage_BF4F-1107_。
你能帮我完成这段代码吗?
此外,我希望以静默方式创建目录sable。
我不希望用户必须触摸“保存”。
我正在尝试使用 Storage Access Framework (https://developer.android.com/training/data-storage/shared/documents-files),因为当我尝试在 SD 上创建目录时,java.io.File 类的 mkdirs 方法不起作用(出现权限被拒绝异常)卡。
编辑:我的 Android 版本是 6.0.1
谢谢。
【问题讨论】:
-
我编辑了我的帖子(编辑:和编辑 2:)。
-
N_CREATE_DIRECTORY您的意图创建了一个带有 ACTION_CREATE_DOCUMENT 的文件。不是目录。您在代码中所做的是尝试在文件中创建目录。那是行不通的。 -
请编辑您的帖子。删除旧的东西。只发一个问题。或者你让用户选择一个文件夹,或者你让用户创建一个文件。你的帖子现在很混乱。
-
我所做的是将元文件保存在我想使用 SAF ACTION_CREATE_DOCUMENT 创建的目录中。这将创建目录(带有一个空文件,如 582020.txt)
-
@Angel_Koh 你的意思是在“/storage/BF4F-1107/sable/”中创建了一个文件“582020.txt”(例如),目录“sable”不存在在此操作之前,是否创建了目录“sable”和文件“582020.txt”?你能发布一点代码吗?您的目录是静默创建的吗?谢谢。
标签: java android directory filesystems