我试图在toast上显示所有sd-card文件夹的所有文件。但它只显示文件夹列表而不是所有文件夹的子文件夹/文件。
File root=new File(Environment.getExternalStorageDirectory().getAbsolutePath());
getFilesRecursive(root);
}
private void getFilesRecursive(File dir)
{
if (dir.exists())
{
File[] files=dir.listFiles();
//Toast.makeText(Viruslist.this, "Nos:"+files.length, Toast.LENGTH_SHORT).show();
for (int i = 0; i <files.length; i++)
{
File file=files[i];
if (file.isDirectory())
{
getFilesRecursive(file);
}
else
{
name=file.getName();
Toast.makeText(Viruslist.this, name, Toast.LENGTH_SHORT).show();
}
file=null;
}
}
else
{
Toast.makeText(Viruslist.this, "No", Toast.LENGTH_SHORT).show();
}
}
}
答案 0 :(得分:1)
public void someMethod()
{
traverse(Environment.getExternalStorageDirectory());
}
public void traverse (File dir) {
if (dir.exists()) {
File[] files = dir.listFiles();
for (int i = 0; i < files.length; ++i) {
File file = files[i];
if (file.isDirectory()) {
traverse(file);
} else {
//print toast
}
}
files = null;
}
}
这标识了每个目录中的文件。试试这个..尝试在使用完成后尽快使对象无效。尝试在后台线程中执行此操作..因为它可能需要一些时间