【问题标题】:InputStream when partial name is known? (Android)知道部分名称时的InputStream? (安卓)
【发布时间】:2012-10-16 00:16:11
【问题描述】:

我要读取一个名称部分已知的文件。假设我有几个文件如下:

  • apple_5_34.jpg
  • orange_3_67.bmp
  • banana_1_13.gif

当我只知道“apple”、“orange”或“banana”这些词时,我想获取这些文件的 InputStream。

任何建议将不胜感激,并提前致谢。

【问题讨论】:

    标签: java android file io inputstream


    【解决方案1】:

    在目录上调用listFiles()以获取文件数组,循环遍历它,检查是否File[i].getName().toLowerCase().startsWith("banana"),如果是,则为File[i]获取InputStream

    【讨论】:

    • 完美。列出ZipResourceFile中的所有文件是否也有效?
    • 如果您可以获取 ZipResourceFile 中的文件列表,可以。找不到该类的文档,所以我没有检查。
    • @SamRad Filezip 类型视为文件而非文件夹,因此它也适用于您
    • ZipResourceFile 不是文件。这是APK Expansion Zip Library 中包含的一个类,它允许您获取已知文件的 InputStream。实际上那个 Zip 包含我的文件。但是你的回答很有帮助。谢谢@Fess @Mike_SD
    【解决方案2】:

    你有两个选择:

    在所有文件夹内容上循环运行,并检查startsWith 上面定义的所有三个名称的大小写。

    或运行regex 喜欢:

    [apple|banana|orange]+([\d\D]+)
    

    /\b[apple|banana|orange][^\b]+\b/g
    

    sn-ps 代码

     InputStream in = null;
    
    if(File[i].getName().matches("[apple|banana|orange]+([\d\D]+)")){
     in = new FileInputStream(File[i]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多