Programa compreender o final da linha com o uso de BufferedReady .readLine()

Boa tarde a todos.

Estou enfrentando o seguinte problema.

Preciso pegar o conteudo de uma String porém preciso delimitar o inicio dela, para isso esto usando Pattern e Matcher.

O problema é como eu faço para o programa entender que chegou ao fim da linha?

Segue abaixo o código que desenvolvi até o momento. Desta forma ele não funciona.

//Vetor para delimitar o DEPOIS que eu quero caputurar.
        String[] vetor = new String[]{"Objeto:",
                                      "Edital:",
                                      "Nº ConLicitação:",
                                      "Datas:",
                                      "Observação:",
                                      "Unid. Licitante:",
                                      "Endereço:",
                                      "CEP:",
                                      "Cidade:",
                                      "Fone:",
                                      "Homepage:"};
        BufferedReader bfRead = leituraArquivo();
        String strLine;
        
        //Lista que irá conter o inteiro demarcando o inicio e o fim do arquivo.
        List<Integer> listaInicio = new ArrayList<Integer>();
        List<Integer> listaFinal = new ArrayList<Integer>();
        
        //String delimitadora entre um objeto e outro.
        Pattern pattern = Pattern.compile("_");
        
        while ((strLine = bfRead.readLine()) != null) {
            Matcher matcher = pattern.matcher(strLine);
            //Caso encontre o sublinhado, que define a finalização do preenchimento do objeto.
            if(!matcher.find()){
                //Armazenamos de acordo com o valor encontrado na linha lida
                //no objeto correspondente.
//Instanciando os objetos Conlicitação e DAO
                Conlicitacao conli = new Conlicitacao();
                ConlicitacaoDao dao = new ConlicitacaoDao();
                
                //Faz a busca na linha de cada valor do vetor
                //para verificar se existe alguma das palavras que necessitam estar nele.
                for(int i = 0; i <= vetor.length; i++){
                    Pattern pStart = null;
                    Pattern pEnd = null;
                    if(i < vetor.length){
                        pStart = Pattern.compile(vetor[i]);
                        pEnd   = Pattern.compile("-1");
                    }else{
                        pStart = Pattern.compile(vetor[i]);
                        pEnd   = Pattern.compile("_");
                    }
                    
                    Matcher mStart = pStart.matcher(strLine);
                    Matcher mEnd   = pEnd.matcher(strLine);
                
                    if (i == 0) {
                        while (mStart.find()) {
                            listaInicio.add(mStart.end());
                        }

                        while (mEnd.find()) {
                            listaFinal.add(mEnd.start());
                        }

                        //Exibindo a String com o conteudo.
                        JOptionPane.showMessageDialog(null, strLine.substring(listaInicio.get(0), listaFinal.get(0)));
                        conli.setConObjeto(strLine.substring(listaInicio.get(0), listaFinal.get(0)));
                    }

Agradeço a todos que responderem.

Sem mais.

Não ficou muito claro o que vc quis dizer com [quote]como eu faço para o programa entender que chegou ao fim da linha?[/quote]
A classe String tem o [quote]length()[/quote] resolve de alguma forma?