如何解决捕获 InputStream 字符模式并将以下字符分配给 String
我有一个程序需要读取文件“FileToRead”中的特定行/字符。该文件位于 File.trk 中,当它转换为 File.zip 时,该文件会包含其他文件夹和文件。
( File.trk to File.zip,File.zip 结构为 File.zip / FolderA / FolderB / FileToRead )
到目前为止,我已经能够将 File.trk 转换为 File.zip,并使用 ZipEntry 和 InputStream 将其转换为 FileToRead。我现在唯一的问题是如何从 InputStream 捕获特定行或字符模式并将以下字符分配给 String?或者是否有更有效的方法来读取具有多个目录的 .zip 文件夹中的文件?
我知道 FileToRead 的内容,我只需要一个特定的行,其中只包含一个单词(字符集)一次。
文件中的行:["DictKey_sortie_29"] = "Gauntlet"
文件中只出现一次且始终相同的单词:“出击”
想将“Gauntlet”设置为字符串变量。 (“Gauntlet”将始终更改为其他名称。)
File trk = new File("C:\\Path\\File.trk");
File zip = new File("C:\\Path\\File.zip");
boolean success = trk.renameTo(zip);
if (success) {
ZipFile zipFile = new ZipFile(zip);
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while(entries.hasMoreElements()){
ZipEntry entry = entries.nextElement();
if (entry.getName().contentEquals("FolderA/FolderB/FileToRead")) {
InputStream stream = zipFile.getInputStream(entry);
int content;
while ((content = stream.read()) != -1) {
System.out.print((char)content);
}
stream.close();
}
}
}
解决方法
用 zipFile.getInputStream(entry)
和 InputStreamReader
包裹 BufferedReader
,然后逐行读取文件。
BufferedReader br = new BufferedReader(new InputStreamReader(zipFile.getInputStream(entry)));
String line;
while ((line = br.readLine()) != null) {
if (line.contains("sortie")) {
//do your thing here
}
}
并且不要忘记在完成后关闭 BufferedReader。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。