【问题标题】:How do I pick only the files that are images?如何仅选择图像文件?
【发布时间】:2014-11-01 08:31:48
【问题描述】:

我试图只选择图像文件而且我成功了, 但是现在该应用程序需要很长时间才能加载..

这是我的代码的一部分:

onCreate:

filename(testimg);
            while (type != "jpeg" && type != "GIF" && type != "PNG"
                    && type != "BMP" && type != "WebP") {
                filename(testimg);
            }

文件名(函数):

public void filename(File filename) {
    abcd = filename.toString();
    File[] listFiles = filename.listFiles();
    Random r = new Random();
    File randomPicture = listFiles[r.nextInt(listFiles.length)];
    Uri pictureUri = Uri.fromFile(randomPicture);

    convertedPath = randomPicture.getAbsolutePath();

    if (convertedPath.lastIndexOf(".") != -1) {
        String ext = convertedPath
                .substring(convertedPath.lastIndexOf(".") + 1);
        MimeTypeMap mime = MimeTypeMap.getSingleton();
        type = mime.getExtensionFromMimeType(mime
                .getMimeTypeFromExtension(ext));
        System.out.println(type);
    } else {
        type = null;
    }
    image.setImageURI(pictureUri);
}

请问有没有更有效的方法?

【问题讨论】:

    标签: android image file random while-loop


    【解决方案1】:
     File[] listFiles = filename.listFiles( new FileFilter(){
    @Override
    public boolean accept(File file){
    return file.isFile() && (file.getName().endsWith(".jpg") || file.getName().endsWith(".png")); //add more extensions if needed
    
    }
    });
    

    【讨论】:

    • 最佳解决方案,这就是我的做法。但是不要在这里使用 contains,使用 endsWith!
    【解决方案2】:

    我试图只选择图像文件

    为什么不直接使用OR?我认为这更好:

     while (type.equals("jpeg") || //more types) {
                    filename(testimg);
                }
    

    因为如果OR 中的任何一个是TRUE,那么它就是一个图像文件。

    【讨论】:

      猜你喜欢
      • 2020-04-15
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多