部分名称已知,如何获取InputStream?(Android)

3

我想读取一个文件,但只知道部分文件名。比如我有几个文件如下:

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

我只知道文件名中包含“apple”、“orange”或“banana”,想要获取这些文件的InputStream流。

如果您有任何建议,将不胜感激,提前致谢。

2个回答

3

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


完美。ZipResourceFile 也可以列出所有文件吗? - Sam R.
1
如果您可以获取ZipResourceFile内部的文件列表,那么是可以的。我找不到该类的文档,所以还没有检查过。 - Mike_SD
1
@SamRad File 类型将 zip 类型视为文件而不是文件夹,所以它对您也有效。 - Maxim Shoustin
ZipResourceFile 不是文件,它是包含在 APK Expansion Zip Library 中的一个类,它允许您获取已知文件的 InputStream。实际上该 Zip 包含了我的文件。但是你的答案帮了很大的忙。谢谢 @Fess @Mike_SD。 - Sam R.

2

您有两个选项:

循环运行所有文件夹内容,并检查以上3个名称的startsWith情况。

或者运行regex,例如:

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

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

代码片段
 InputStream in = null;

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接