- 这几天为了扫描Scard卡全部的图片的事非常纠结,我原本以为这是一件非常easy的事。可是我发现我错了。网上也没有完整的代码。仅仅是零零碎碎的能扫描单个文件的代码。在今天代码调试通过之后,我认为我有必要和大家分享一下。
1、因为是手机端的扫描,所以最好开个线程。在子线程中把扫描工作完毕这是很重要的,那么如今開始来看这个类吧!这个代码能够扫描出SCARD卡上全部的文件。
- public
class GetFilePathThread implements
Runnable {
-
- public
String pathString;
- public
List<String> listpath;
- public GetFilePathThread(String path,List<String>
list)
{
- this.pathString=path;
- this.listpath=list;
- }
-
- public
void run()
{
- File
file=new
File(pathString);
- if
(file.isDirectory())
{
- File fs[]=file.listFiles();
- if(fs!=null)
{
- System.out.println("文件夹里面包括的全部文件个数--->"+fs.length);
- if
(fs.length>0)
{
- for(int i=0;i<fs.length;i++)
{
- if
(fs[i].isFile())
{
- listpath.add(fs[i].getAbsolutePath());
- System.out.println("文件的绝对路径---->"+fs[i].getAbsolutePath());
- }
else if (fs[i].isDirectory())
{
- System.out.println("文件夹的绝对路径---->"+fs[i].getAbsolutePath()+"/");
- new
Thread(new GetFilePathThread(fs[i].getAbsolutePath()+"/",
listpath)).start();
- // getFilePath(fs[i].getAbsolutePath(),listpath);
-
- }
- }
- }
- }
- }
- }
- }
2、扫描出我们所须要的图片文件,当然在这之前要先定义
private List list=new ArrayList();
- StringBuffer
buffer=new
StringBuffer();
- for(int i=0;i<list.size();i++)
{
- if
(list.get(i).endsWith(".jpg"))
{
- buffer.append(list.get(i).toString()+"n");
- }
- }
3、记得增加关于Scard卡的读写权限。这个非常重要。至于开启线程的事,我就不多说了 。
总结:这次代码在小地方纠结了非常久,真的非常不应该。主要问题是两个,一个是怎么遍历目录下的子文件,第二,怎么获取加入进去的文件路径;
希望这些能对大家实用!