Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中读取定长文件_Java_Parsing_Reader - Fatal编程技术网

如何在java中读取定长文件

如何在java中读取定长文件,java,parsing,reader,Java,Parsing,Reader,我正在用java阅读固定长度的平面文件 我是新手,有人能帮我做定长阅读器吗?当它是一个文本文件,有定长的行时,普通的阅读器就足够了 这假设每条记录的末尾都有一个换行符 List<MyRecord> result = new ArrayList<>(); Path file = Paths.get("C:/Import/20190308.txt"); Charset charset = Charset.defaultCharset(); Files.lines(path

我正在用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);
    });

二进制数据还是文本?具有固定大小的
字节[]
的FileInputStream将是一个起点。欢迎使用StackOverflow。这是一个问答网站。这不是一个“帮助”网站,因为这需要不同的格式,而不是“问答”。请阅读。请做一些研究,创建一个程序,如果你有任何具体的,可回答的问题,欢迎你在这里发布。它将是文本文件@Joop Eggenthanks,以获得你的支持,但这对我没有帮助。请你详细说明一下。我补充了一点。尝试只读取行(可能来自一个简化的小样本文件),然后从那里开始工作,检查行长度。调试。
public class MyRecord {
    public long id;
    public String name;
    public int age;
    ...
}