gpt4 book ai didi

java - Android 中如何获取某个目录下的文件列表?

转载 作者:行者123 更新时间:2023-12-02 03:51:22 27 4
gpt4 key购买 nike

我想列出目录中的所有图像以制作图库。下面的示例使用 Intent 来获取目录路径。

我尝试了 listFiles() 方法,但它返回 null。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Permision Request
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
1);
initialize();
}

//For the Intent to get Folder
private void initialize() {
Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
i.addCategory(Intent.CATEGORY_DEFAULT);
startActivityForResult(Intent.createChooser(i, "Choose directory"), 9999);
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case 9999:
//File myFile = new File(data.getData().toString());
String path = data.getData().toString();
//View the path
Log.i("Test", "Result URI " + path);
Toast.makeText(getApplicationContext(), "Result URI " +data.getData().toString(), Toast.LENGTH_LONG).show();

//Creating new File for the directory
File directory = new File(path);
File[] files = directory.listFiles();

Log.d("Files", "Size: "+ files.length);
for (int i = 0; i < files.length; i++)
{
//Show the name of the files in the directory
Log.d("Files", "FileName:" + files[i].getName());
}

break;
}
}

在 list 中我也有读取外部存储的权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

预计返回目录中文件的名称,但返回此错误:

Caused by: java.lang.NullPointerException: Attempt to get the length of null array
at cu.edu.cujae.citi.folderpicker.MainActivity.workWithFile(MainActivity.java:59)
at cu.edu.cujae.citi.folderpicker.MainActivity.onActivityResult(MainActivity.java:49)
at android.app.Activity.dispatchActivityResult(Activity.java:6932)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4085)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132) 
at android.app.ActivityThread.-wrap20(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6119) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

最佳答案

The example below is working with a Intent to get the directory path.

不,它使用 ACTION_OPEN_DOCUMENT_TREE 来获取文档树。这可能代表也可能不代表文件系统上的目录。

使用 ACTION_OPEN_DOCUMENT_TREE 返回的 Uri 的最简单方法是使用 DocumentFile.fromTreeUri()。然后,您可以对其调用 listFiles() 来获取指向该树中文档(和子树)的 DocumentFile 对象。

关于java - Android 中如何获取某个目录下的文件列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56777815/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com