我正在阅读固定长度的java平面文件我是新手,任何人都可以帮我解决固定长度读卡器的问题吗?
当它是具有固定长度线的文本文件时,普通阅读器就足够了。
这假定每条记录末尾都有换行符。
List<MyRecord> result = new ArrayList<>();
Path file = Paths.get("C:/Import/20190308.txt");
Charset charset = Charset.defaultCharset();
Files.lines(path, charset)
.filter(line -> line.length() != 142)
.forEach(line -> {
MyRecord record = new MyRecord();
record.id = Long.parseLong(line.substring(0, 10).trim());
record.name = line.substring(10, 50).trim();
record.age = Integer.parseInt(line.substring(50, 53).trim());
...
result.add(record);
});
String.trim()
删除之前(“Mary”)和之后(“89”)的填充空格。 String.substring(position, nextPosition)
选择固定的领域。
读取行没有换行符 - \r\n
或\n
。检查线路长度(此处为142)。这是char
s中的长度,但很可能也是字节长度,因为固定长度记录可能在单字节字符集中。
对于某些自定义类MyRecord镜像CSV行:
public class MyRecord {
public long id;
public String name;
public int age;
...
}