我有几百行的用户可读文件。每行都很短(〜20-30个符号)。
有时我需要对另一个字符串执行该字符串的equals操作。
如果字符串不同,我需要找到不同的第一行。当然可以手动进行:
在循环中找到第一个不同的字符,然后找到上一个和下一个字符,'/n'
但是从我的角度来看,这段代码并不完美。
还有其他方法可以使用一些外部库来实现吗?
不需要任何库,您所要求的很简单。但是它足够独特,没有库会拥有它,所以只需要自己编写即可。
import java.nio.file.Files;
import java.util.*;
...
Optional<String> findFirstDifferentLine(Path file, Collection<String> rows) throws IOException {
try (var fileStream = Files.lines(file)) { // Need to close
var fileIt = fileStream.iterator();
var rowIt = rows.iterator();
while (fileIt.hasNext() && rowIt.hasNext()) {
var fileItem = fileIt.next();
if (!Objects.equal(fileItem, rowIt.next()) {
return Optional.of(fileItem);
}
}
return Optional.of(fileIt)
.filter(Iterator::hasNext)
.map(Iterator::next);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句