Android/Java: 内容原始文件夹的文件名到数组
Android/Java: filenames of contents raw folder to array
我自己想了很久之后,是时候问问你了:社区!我确定解决方案应该在另一个 post 中的某个地方,但我根本找不到它(或将它应用到我的代码)。
我想实现以下目标:启动我的 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/
。然后,您可以使用 AssetManager
和 list()
检索这些资产的名称,并使用 open()
获得其中一个的 InputStream
。虽然资产也不是设备上的文件,但 AssetManager
API 更像文件。
如果您想坚持使用原始资源,则需要使用 Java 反射遍历 R.raw
上定义的所有 static
字段以找到它们的资源 ID,然后使用openRawResource()
在 Resources()
对象上获取 InputStream
.
我自己想了很久之后,是时候问问你了:社区!我确定解决方案应该在另一个 post 中的某个地方,但我根本找不到它(或将它应用到我的代码)。
我想实现以下目标:启动我的 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/
。然后,您可以使用 AssetManager
和 list()
检索这些资产的名称,并使用 open()
获得其中一个的 InputStream
。虽然资产也不是设备上的文件,但 AssetManager
API 更像文件。
如果您想坚持使用原始资源,则需要使用 Java 反射遍历 R.raw
上定义的所有 static
字段以找到它们的资源 ID,然后使用openRawResource()
在 Resources()
对象上获取 InputStream
.