【发布时间】: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
我要读取一个名称部分已知的文件。假设我有几个文件如下:
当我只知道“apple”、“orange”或“banana”这些词时,我想获取这些文件的 InputStream。
任何建议将不胜感激,并提前致谢。
【问题讨论】:
标签: java android file io inputstream
在目录上调用listFiles()以获取文件数组,循环遍历它,检查是否File[i].getName().toLowerCase().startsWith("banana"),如果是,则为File[i]获取InputStream。
【讨论】:
ZipResourceFile中的所有文件是否也有效?
File 将 zip 类型视为文件而非文件夹,因此它也适用于您
ZipResourceFile 不是文件。这是APK Expansion Zip Library 中包含的一个类,它允许您获取已知文件的 InputStream。实际上那个 Zip 包含我的文件。但是你的回答很有帮助。谢谢@Fess @Mike_SD
你有两个选择:
在所有文件夹内容上循环运行,并检查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]);
}
【讨论】: