将文件夹中的文件添加到 android 应用中的列表
Adding files from folder to the list in android app
我正在尝试在我的 SD 卡中创建一个文件列表(然后从该列表中随机获取一个文件)。
我已阅读教程,但其中 none 有效。
我的代码如下:
try{
File file=new File("/sdcard");
File[] list = new File ("/sdcard").listFiles();
ArrayList<String> lista = new ArrayList<String>();
for (File f : list){
if (f.isFile()){
if (f.getName().startsWith("aa")){
lista.add(f.getName());
}
}
}
Random gen = new Random();
String s = lista.get(gen.nextInt(lista.size()-1)).toString();
wyswietl.setText(s);
}catch(NullPointerException e){
Log.e("nope", e.getMessage());
}
LogCat 显示异常。
我检查了每一行 - 当我尝试显示 lista.size() - 它抛出 ResourcesNotFoundException。
有意思的是,把String改成
String s = lista.get(1).toString()
有效 - 它显示了文件夹中的文件之一。
所以我的问题是:如何解决这个问题并在 /sdcard 文件夹中获取文件列表(以 "aa" 开头)?
如果lista.size () 等于 0 则可能发生异常...
(因为 gen.nextInt (-1) )
希望大家预防。
如果你想在数组列表中随机选择一个项目,我相信它应该是
String s = lista.get(gen.nextInt(lista.size()));
Random.nextInt(int n) 检索 0-(n-1) 之间的随机值。参见 Random.nextInt() documentation。
ResourceNotFound 异常我认为与无法在 R.java 内找到资源 ID 而非索引超出范围异常有关。
TextView.setText() 带有整数值参数,将整数值解释为资源 ID,see here。所以如果你打电话给
atextView.setText(lista.size());
它会抛出 ResourceNotFoundException 因为它可能没有指向正确的资源 ID。如果要显示列表中的项目数,则
atextView.setText(String.valueOf(lista.size()));
这是根据文件名过滤文件列表的不同方法!!!!
File f = new File("/sdcard");
String fileList[];
if(f.isDirectory()){
fileList = f.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
if (name.startsWith("aa")){
return true;
}
return false;
}
});
'FileList' 是一个数组,您可以在其中获取所有 File 对象,然后您可以轻松地从中获取文件名!!!!
希望这会有所帮助!!!
我找到了此代码不起作用的解决方案。这些文件还不在文件夹中 - 我必须手动将名称添加到列表中,然后在其他功能中检查它们是否在 sdcard 上(如果不在,则需要复制;如果是,我可以显示内容)。
我正在尝试在我的 SD 卡中创建一个文件列表(然后从该列表中随机获取一个文件)。
我已阅读教程,但其中 none 有效。
我的代码如下:
try{
File file=new File("/sdcard");
File[] list = new File ("/sdcard").listFiles();
ArrayList<String> lista = new ArrayList<String>();
for (File f : list){
if (f.isFile()){
if (f.getName().startsWith("aa")){
lista.add(f.getName());
}
}
}
Random gen = new Random();
String s = lista.get(gen.nextInt(lista.size()-1)).toString();
wyswietl.setText(s);
}catch(NullPointerException e){
Log.e("nope", e.getMessage());
}
LogCat 显示异常。
我检查了每一行 - 当我尝试显示 lista.size() - 它抛出 ResourcesNotFoundException。
有意思的是,把String改成
String s = lista.get(1).toString()
有效 - 它显示了文件夹中的文件之一。
所以我的问题是:如何解决这个问题并在 /sdcard 文件夹中获取文件列表(以 "aa" 开头)?
如果lista.size () 等于 0 则可能发生异常... (因为 gen.nextInt (-1) )
希望大家预防。
如果你想在数组列表中随机选择一个项目,我相信它应该是
String s = lista.get(gen.nextInt(lista.size()));
Random.nextInt(int n) 检索 0-(n-1) 之间的随机值。参见 Random.nextInt() documentation。
ResourceNotFound 异常我认为与无法在 R.java 内找到资源 ID 而非索引超出范围异常有关。
TextView.setText() 带有整数值参数,将整数值解释为资源 ID,see here。所以如果你打电话给
atextView.setText(lista.size());
它会抛出 ResourceNotFoundException 因为它可能没有指向正确的资源 ID。如果要显示列表中的项目数,则
atextView.setText(String.valueOf(lista.size()));
这是根据文件名过滤文件列表的不同方法!!!!
File f = new File("/sdcard");
String fileList[];
if(f.isDirectory()){
fileList = f.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
if (name.startsWith("aa")){
return true;
}
return false;
}
});
'FileList' 是一个数组,您可以在其中获取所有 File 对象,然后您可以轻松地从中获取文件名!!!! 希望这会有所帮助!!!
我找到了此代码不起作用的解决方案。这些文件还不在文件夹中 - 我必须手动将名称添加到列表中,然后在其他功能中检查它们是否在 sdcard 上(如果不在,则需要复制;如果是,我可以显示内容)。