从dat文件中获取想要的内容,换一种方式提取字符串

有时候dat文件里的内容长短不一样,下方的代码提取出的字符串就位置不对
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class OpenTextLine {
    public static void main(String[] args) throws IOException {
        long timeStart = System.currentTimeMillis();
        File file = new File("D:\\3.dat");//文件路径
        FileReader fileReader = new FileReader(file);
        LineNumberReader reader = new LineNumberReader(fileReader);
        int number = 1;//设置指定行数
        String data = "";
        int lines = 0;
        while (data != null) {
            lines++;
            data = reader.readLine();
            if (lines == number) {
                String line =data;
                String out1 = line.substring(45,58);
                String out2 = line.substring(132,133);
                System.out.println(out1);
               System.out.println(out2);
                System.exit(0);
            }
        }
        reader.close();
        fileReader.close();



    }


}

下方是dat文件

9LB6837N20073|100-000000862-01|5315579220005|0900038337298|5315579|5315579|0900038|001|03/08/2022 08:02:31|2DSRT10MCS|202671|5SUZ|T|5|SPL
9LB6837N20008|100-000000862-01|5315579220005|0900038337298|5315579|5315579|0900038|001|03/08/2022 08:02:31|2DSRT10MCS|202671|5SUZ|T|5|SPL
9LB6837N20104|100-000000862-01|5315579220005|0900038337298|5315579|5315579|0900038|001|03/08/2022 08:02:31|2DSRT10MCS|202671|5SUZ|T|5|SPL
9LB6837N20065|100-000000862-01|5315579220005|0900038337298|5315579|5315579|0900038|001|03/08/2022 08:02:31|2DSRT10MCS|202671|5SUZ|T|5|SPL
9LB6837N20059|100-000000862-01|5315579220005|0900038337298|5315579|5315579|0900038|001|03/08/2022 08:02:31|2DSRT10MCS|202671|5SUZ|T|5|SPL

输出0900038337298和5所在的位置

最好是使用ObjectInputSream,ObjectOutputStream操作文件,保存序列化的javabean。