Ler arquivo txt e ir adicionando linhas especificas a um List

Ola amigos tenho a seguinte classe lendo do seguinte arquivo txt mais abaixo, funciona assim, eu leio tudo que tem por inicio 75 pego essas linhas e com substring armazeno numa variavel que servira para popular meus beans numa lista, só que nem todas informações estao na linha 75 algumas por exemplo estao na linha 54 se eu criar blocos ifs, os elemntos não vao para a lista, alguem tem alguma ideia de como deveria fazer isso:
abaixo segue meu cod, para vcs verem como eu estava fazendo, abraços e obrigado desde ja.

548939371400011001   0957081201090003800301        000000027000000000045580000000000000000000045580000000000000000000000001700
769320976500062101   0004161201100000000000        000000000000000000000000000000000000000000000000000000000000000000000000000
548939371400011001   0957081201090004800382        000001570000000000175840000000000000000000175840000000000000000000000001700
549320976500062101   5474161201090003800522        000000560000000000136080000000000000000000136080000000000000000000000001700
549320976500062101   5474161201090004800692        000003020000000001017740000000000000000001017740000000000000000000000001700
549320976500062101   5474161201090005801062        000000050000000000090700000000000000000000090700000000000000000000000001700
549320976500062101   5474161201090006801942        000000370000000000083250000000000000000000083250000000000000000000000001700
549320976502391501   538864591100000190901         000000010000000000005000000000000000000000005000000000000000000000000001700
549446491400015701   001099110109000104641         000002000000000000300000000000000000000000211770000000000000000000000001700
7004510915000106152188762     20090430PA08   88172123520000000333334000000003333340000000004000000000000000000000000000000001N
75200904012009043000831                 EMBALAGEM PARMISSIMO 50GR KG                         KG    000000000000000000000000000
75200904012009043004641                 ALCOOL 70% onu 1170,3 II                             LT    000000000000000000000000000
 public static List<DetalheProduto> loadSintegra() throws FileNotFoundException {
        InputStream in = new FileInputStream("res/sintegra.txt");
        Scanner scan = new Scanner(in);
        int index = 0;

        List<DetalheProduto> produtos = new ArrayList<DetalheProduto>();

        while (scan.hasNextLine()) {
            final String line = scan.nextLine();

            // somente linhas que começam com 75
            if (line.startsWith("75")) {
                index++; // incrementa o index

                String dataInicial = line.substring(2, 10).trim();
                String dataFinal = line.substring(10, 18).trim();
                String codigo = line.substring(18, 31).trim();
                String codigoNCM = line.substring(32, 40).trim();
                String descricao = line.substring(40, 93).trim();
                String unidadeMedida = line.substring(93, 99).trim();
                String situacaoTributaria = line.substring(99, 102).trim();
                String aliquotaIPI = line.substring(102, 106).trim();
                String aliquotaICMS = line.substring(106, 110).trim();
                String reducaoCalculoICMS = line.substring(110, 114).trim();
                String baseCalculoICMS = line.substring(114, 126).trim();
                                

                // Produto
                Produto produto = new Produto();
                produto.setCProd(codigo);
                produto.setCEAN(codigoNCM);
                produto.setXProd(descricao);
                produto.setCFOP(5101L);
                produto.setUCom(unidadeMedida);

                produto.setQCom("1000000.00");
                produto.setVUnCom(1L);
                produto.setVProd("1000000.00");
                produto.setCEANTrib("");
                produto.setUTrib("und");
                produto.setQTrib("12000000.0000");
                produto.setVUnTrib("1");

                // Imposto
                Imposto imposto = new Imposto();

                // ICMS
                Icms icms = new Icms();
                imposto.setIcms(icms);

                // ICMS00
                Icms00 icms00 = new Icms00();
                icms.setIcms00(icms00);
                icms00.setOrig(Origem.NACIONAL.ordinal());
                icms00.setCST("00");
                icms00.setModBC(Modalidade.PRECO_TABELADO.ordinal());
                icms00.setVBC("10000000.00");
                icms00.setPICMS("18.00");
                icms00.setVICMS("18.00");

                // PIS
                Pis pis = new Pis();
                imposto.setPis(pis);

                // PISAliq
                PISAliq pisAliq = new PISAliq();
                pis.setPisAliq(pisAliq);
                pisAliq.setCST(SituacaoTributaria.OPERACAO_TRIBUTAVEL_ALI_NORMAL);
                pisAliq.setVBC("10000000.00");
                pisAliq.setPPIS(0.65);
                pisAliq.setVPIS(65000L);

                // COFINS
                Cofins cofins = new Cofins();
                imposto.setCofins(cofins);

                //COFINSAliq
                CofinsAliq cofinsAliq = new CofinsAliq();
                cofins.setCofinsAliq(cofinsAliq);
                cofinsAliq.setCST("01");
                cofinsAliq.setVBC("10000000.00");
                cofinsAliq.setPCOFINS("2.00");
                cofinsAliq.setVCOFINS("200000.00");

                DetalheProduto detalhe = new DetalheProduto();
                detalhe.setSequencial(index);
                detalhe.setProd(produto);
                detalhe.setImposto(imposto);

                


                produtos.add(detalhe);
                
            }
            
        }

        try {
            in.close();
        } catch (Exception e) {
            // ignore qualquer erro ao fechar streams
        }

        return produtos;
    }

nenhum fera em leitura de arquivo ai ?

não entendi direito. quando a linha começa com “75” vc consegue ler e quando começa com “54” não consegue?

Os dados da próxima linha nunca vão ter um número? Será sempre uma string?

desculpem, ficou complexo e dificil de explicar o que preciso fazer, mas mudei a logica de agir, acho que encontrei uma solução, assim que tiver pronto venho posta aqui, abraços.

A melhor maneira de se fazer é usando expressão regular, onde vc cria um padrão que será lido em qualquer lugar do arquivo:

http://www.guj.com.br/article.show.logic?id=1