从SD卡计算图像

时间:2014-09-16 08:08:05

标签: android image count sd-card

我创建了一个Android应用程序来计算SD卡图像,并在textview中显示没有计数..我试过但没有结果..请解决我的问题......或者给出任何其他想法..

这是我的代码

            File dir = new File(Environment.getExternalStorageDirectory()
            + "/");
    File[] files = dir.listFiles();
    int numberOfImages=files.length;
         textView1= (TextView ) findViewById(R.id.textView1);
         textView1.setText(numberOfImages);

}}

3 个答案:

答案 0 :(得分:1)

你必须递归调用sd card根文件夹并遍历每个文件夹并提取图像文件将文件添加到数组列表或数组中。尝试下面的代码。

    public static ArrayList<File> getFolderList(File f, ArrayList<File> dir) {
    if (f == null) {
        return dir;
    } else
        try {
            if (f.isDirectory()) {
                File[] listFile = f.listFiles();
                if (listFile != null) {
                    fileCount = listFile.length;
                    for (int i = 0; i < fileCount; i++) {
                        if (listFile[i].isDirectory()) {
                            dir = getFolderList(listFile[i], dir);

                        } else {
                                  if (fName.endsWith(".png")
                                    || fName.endsWith(".jpeg")
                                    || fName.endsWith(".jpg")
                                    || fName.endsWith(".bmp")) {

                                dir.add(listFile[i]);

                            }



                        }
                    }
                }

            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    return dir;
}

参数:

文件f:将f作为sdcard根文件夹路径或任何要获取计数的文件夹路径传递

ArrayList目录:传递一个空的arraylist来获取文件列表。如果只想要文件计数,则更改函数的返回类型,并传递任何计算文件数的参数。

答案 1 :(得分:0)

public static final List<String> FILE_FORMATS_IMAGE = Arrays.asList("jpg","png");
int imageCount=0;
for (File file : dirs) {

             String ext = file.getAbsolutePath().toLowerCase().substring(file.getAbsolutePath().length() - 3);

            if (file.isDirectory()) {
                directories.add(new FileDetail(file.getName(),file.getAbsolutePath(),FileExplorerUtil.FLAG_DIRECTORY_ICON));
            } else {
                if(FILE_FORMATS_IMAGE.contains(ext.toLowerCase())){
               imageCount++;
                }

            }
        }

imageCount的值表示sdcard中图像的总数。

答案 2 :(得分:0)

public static final List<String> FILE_FORMATS_IMAGE = Arrays.asList("jpg","png");
int imageCount=0;
for (File file : dirs) {

             String ext = file.getAbsolutePath().toLowerCase().substring(file.getAbsolutePath().length() - 3);

            if (file.isDirectory()) {
            //if want to count directory count here
            } else {
                if(FILE_FORMATS_IMAGE.contains(ext.toLowerCase())){
               imageCount++;
                }

            }
        }

imageCount的值表示sdcard中图像的总数。