1. 这几天为了扫描Scard卡全部的图片的事非常纠结,我原本以为这是一件非常easy的事。可是我发现我错了。网上也没有完整的代码。仅仅是零零碎碎的能扫描单个文件的代码。在今天代码调试通过之后,我认为我有必要和大家分享一下。

    1、因为是手机端的扫描,所以最好开个线程。在子线程中把扫描工作完毕这是很重要的,那么如今開始来看这个类吧!这个代码能够扫描出SCARD卡上全部的文件。
  1. public
    class GetFilePathThread implements
    Runnable {
  2. public
    String pathString;
  3. public
    List<String> listpath;
  4. public GetFilePathThread(String path,List<String>
    list)
    {
  5. this.pathString=path;
  6. this.listpath=list;
  7. }
  8. public
    void run()
    {
  9. File
    file=new
    File(pathString);
  10. if
    (file.isDirectory())
    {
  11. File fs[]=file.listFiles();
  12. if(fs!=null)
    {
  13. System.out.println("文件夹里面包括的全部文件个数--->"+fs.length);
  14. if
    (fs.length>0)
    {
  15. for(int i=0;i<fs.length;i++)
    {
  16. if
    (fs[i].isFile())
    {
  17. listpath.add(fs[i].getAbsolutePath());
  18. System.out.println("文件的绝对路径---->"+fs[i].getAbsolutePath());
  19. }
    else if (fs[i].isDirectory())
    {
  20. System.out.println("文件夹的绝对路径---->"+fs[i].getAbsolutePath()+"/");
  21. new
    Thread(new GetFilePathThread(fs[i].getAbsolutePath()+"/",
    listpath)).start();
  22. //    getFilePath(fs[i].getAbsolutePath(),listpath);
  23. }
  24. }
  25. }
  26. }
  27. }
  28. }
  29. }

2、扫描出我们所须要的图片文件,当然在这之前要先定义

private List list=new ArrayList();

  1. StringBuffer
    buffer=new
    StringBuffer();
  2. for(int i=0;i<list.size();i++)
    {
  3. if
    (list.get(i).endsWith(".jpg"))
    {
  4. buffer.append(list.get(i).toString()+"n");
  5. }
  6. }

3、记得增加关于Scard卡的读写权限。这个非常重要。至于开启线程的事,我就不多说了 。

总结:这次代码在小地方纠结了非常久,真的非常不应该。主要问题是两个,一个是怎么遍历目录下的子文件,第二,怎么获取加入进去的文件路径;

希望这些能对大家实用!

Android 扫描Scard卡全部的图片的更多相关文章

  1. Android获取SD卡中选中图片的路径(URL)

    最近在做一个图片上传的功能,需要提供上传图片在SD卡中的路径,在网上看了些例子,改改调试成功,代码很简单.其布局文件如下: [html]  view plain copy   <?xml ver ...

  2. android 读取sd卡中的图片

    一.获取读取SD卡的权限 <!--在SDCard中创建与删除文件权限  -->    <uses-permission android:name="android.perm ...

  3. Android扫描SD卡中的文件

    当android的系统启动的时候,系统会自动扫描sdcard内的多媒体文件,并把获得的信息保存在一个系统数据库中,以后在其他程序中如果想要访问多媒体文件的信息,其实就是在这个数据库中进行的,而不是直接 ...

  4. Android 常见SD卡操作

    目录 Android 常见SD卡操作 Android 常见SD卡操作 参考 https://blog.csdn.net/mad1989/article/details/37568667. [0.] E ...

  5. android 照相或从相册获取图片并裁剪

    照相或从相册获取图片并裁剪 在android应用中很多时候都要获取图片(例如获取用户的头像)就需要从用户手机上获取图片.可以直接照,也可以从用户SD卡上获取图片,但获取到的图片未必能达到要求.所以要对 ...

  6. Android 检测SD卡应用

    Android 检测SD卡应用 //                                    Environment.MEDIA_MOUNTED // sd卡在手机上正常使用状态  // ...

  7. Android之ListView异步加载图片且仅显示可见子项中的图片

    折腾了好多天,遇到 N 多让人崩溃无语的问题,不过今天终于有些收获了,这是实验的第一版,有些混乱,下一步进行改造细分,先把代码记录在这儿吧. 网上查了很多资料,发现都千篇一律,抄来抄去,很多细节和完整 ...

  8. Android 从 Android 本地图库选择多个图片

    原文地址 本文说明如何从 Android 本地图库选择多个图片.作者考虑很多解决方案. 演示从 Android 本地图库选择多个图片,有两个方法可以实现从图库中选择多个图片: 用 Intent 获取多 ...

  9. Android 界面滑动卡顿分析与解决方案(入门)

    Android 界面滑动卡顿分析与解决方案(入门) 导致Android界面滑动卡顿主要有两个原因: 1.UI线程(main)有耗时操作 2.视图渲染时间过长,导致卡顿 目前只讲第1点,第二点相对比较复 ...

随机推荐

  1. day05_02 IDE介绍及设置

    notepad++比较麻烦,使用IDE工具进行程序开发 集成开发环境(IDE,Integrated Development Environment) VIM #经典的linux下的文本编辑器 Emac ...

  2. ccna 闫辉单臂路由 和 acl access control list

    ccna 闫辉单臂路由 和  acl   access control list 一单臂路由     当前园区网设计很少用到       成本低  小型的.局域网可用         二ACL acc ...

  3. linux 基础 软件的安装 *****

    一软件的安装   原代码与tarball 源代码---->编译------>可执行文件 查看文件类型   file命令    是否是二进制文件 注意如果文件的可执行权限 .c结尾的源文件- ...

  4. [git 学习篇]git管理的是修改,并非文件

    你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. 为什么说Git管理的 ...

  5. AtCoder Beginner Contest 070

    我好想有点思维江化,所以我想给这个丝毫没有问题的abc也写下 A - Palindromic Number Time Limit: 2 sec / Memory Limit: 256 MB Score ...

  6. queue 类

    一:普通队列 1.队列特征:先进先出,它只允许在一端(队尾)进行插入元素操作,在另一端(队头)进行删除元素操作 2. 存取类函数 front():用来取出queue中的队头元素,对应于front()函 ...

  7. 算法复习——区间dp

    感觉对区间dp也不好说些什么直接照搬讲义了2333 例题: 1.引水入城(洛谷1514) 这道题先开始看不出来到底和区间dp有什么卵关系···· 首先肯定是bfs暴力判一判可以覆盖到哪些城市····无 ...

  8. Failed to apply plugin [id 'com.gradle.build-scan']

    把spring源码clone下来之后,使用gradle编译不通过,异常日志如下: FAILURE: Build failed with an exception. * Where: Build fil ...

  9. java面试题之Thread类中的start()和run()方法有什么区别

    start()方法被用来启动新创建的线程,而且start()内部调用了run()方法, 区别: 当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动: start()方法才会启动新 ...

  10. jq 的replaceWith方法在360下面会出现兼容问题

    弄的繁琐点, 先remove旧的元素,然后append就好了