试图在Toast

时间:2015-05-04 07:48:28

标签: android

我试图在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();
		}
		
		
	}

}

1 个答案:

答案 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;
        }
    } 

这标识了每个目录中的文件。试试这个..尝试在使用完成后尽快使对象无效。尝试在后台线程中执行此操作..因为它可能需要一些时间