我想读取一个分隔符分隔或固定宽度的文件(定义的布局),并希望获得类似Resultset的东西,通过它我可以迭代记录。
这样做有可靠的库吗?如果没有,那么任何人都可以建议我如何进行?示例代码段对我非常有帮助。
答案 0 :(得分:1)
您可以使用java ios迭代文本文件中的每一行,然后实现自己的逻辑来分割行并按照需要执行。
public static void main(String args[]) throws Exception {
//input file
File inputFile = new File("c:/hadoop/sample.txt");
BufferedReader br = new BufferedReader(new FileReader(inputFile));
String s = null;
while ((s = (br.readLine())) != null) {
//check each line and do the logic may be split or based on the requirement
String cols[] =s.split("|");
}
}
答案 1 :(得分:0)
public static Stream<String> lines(Path path)
throws IOException
从文件中读取所有行作为流。使用UTF-8字符集将文件中的字节解码为字符。
此方法的作用就好像调用它等同于评估表达式:
Files.lines(path, StandardCharsets.UTF_8)
<强>参数:强> path - 文件的路径
返回:文件中的行作为流
投掷:
IOException - 如果打开文件时出现I / O错误
SecurityException - 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead方法来检查对该文件的读访问权。
自: 1.8
Files.lines(Path)
需要Path
参数并返回Stream<String>
。
这是Java 8,因此您可以使用lambda表达式或方法引用来提供Consumer
参数。
public class FixedWidthFile {
public static void main(String JavaLatte[]) {
Path path = Paths.get("/home/sample.txt");
try {
Stream<String> lines = Files.lines(path);
lines.forEach(s -> System.out.println(s));
} catch (IOException ex) {
}
}
}
参考:Class Files