gpt4 book ai didi

java - 安卓/Java : filenames of contents raw folder to array

转载 作者:行者123 更新时间:2023-12-01 20:20:19 25 4
gpt4 key购买 nike

在尝试自己解决这个问题相当长一段时间后,是时候问你了:社区!我确信解决方案应该在另一篇文章中的某个地方,但我根本找不到它(或将其应用到我的代码中)。

我想实现以下目标:启动我的 Android 应用程序时,我想调用一个执行以下操作的方法:

读取“res/raw”目录中的所有文件名(我在该目录中存储了多个 jpeg),并将这些文件的名称存储到一个数组中。

我想这个问题应该不难回答,但我自己根本无法弄清楚。我研究了 listFiles() 命令,我想这是可行的方法,但我无法让它工作。在这里您将找到我的一段代码以及相关行:

public class Example{
File[] imageNames;
public void onCreate(){
scanFolder();
useTheDataFromScanFolder();
}

public void scanFolder (){
int numberOfFiles = new File("res\raw").listFiles().length;
imageNames = new File("res\raw").listFiles();
}

useTheDataFromScanFolder(){
//here I want to use numberOfFiles and the array imageId
}
}

我希望你能解决我的问题,或者把我推向正确的方向!提前致谢!!

编辑:感谢 CommonsWare,我设法解决了我的问题,我设法使用以下代码让它工作(图片现在存储在/assets/resources/中):

String [] fileList;    

public void onCreate(Bundle savedInstanceState) {
listAssetFiles("resources");
}

public boolean listAssetFiles(String path) {
try {
fileList = getAssets().list(path);
} catch (IOException e) {
return false;
}
return true;
}

最佳答案

Read all filenames in the "res/raw" directory

Android 设备上没有 res/raw/ 目录。您的开发计算机上的 Android 应用项目中可能有一个 res/raw/ 目录。资源不是设备上的文件,而是 APK 文件中的条目。因此,没有文件名。

更简单的解决方案是将这些内容移动到assets/。然后,您可以使用 AssetManagerlist() 检索这些 Assets 的名称,并使用 open() 获取 InputStream 一个。虽然 Assets 也不是设备上的文件,但 AssetManager API 更像文件。

如果您想坚持使用原始资源,则需要使用 Java 反射来迭代 R.raw 上定义的所有 static 字段以查找其资源 ID,然后在 Resources() 对象上使用 openRawResource() 来获取 InputStream

关于java - 安卓/Java : filenames of contents raw folder to array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44871651/

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