Lendo e Manipulando Arquivo Txt

Prezados Bom dia,

Gostaria da ajuda dos senhores para conseguir resolver esta aplicação. É o seguinte eu tem que desenvolver uma aplicação Java que pegue um arquivo txt leia e verifique a sequencia se está correta. Mostro em código como terá que ser feito essa ação. O Código para ler o arquivo eu já implementei, o que está faltando é verificar a sequência. Segue abaixo o Código e depois parte do conteúdo do arquivo, para que os senshores possam entender a sequencia.

Código:

[code]import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class LendoArq {

public static void main(String[] args) throws IOException {

    //Classe que ler um arquivo, a partir do caminho informado pelo usuário
    BufferedReader in;   
    in = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Digite o caminho do arquivo que você quer ler");
    String a = in.readLine();
    try{
        FileInputStream is = new FileInputStream(a);
        InputStreamReader reader = new InputStreamReader(is);
        BufferedReader buffer = new BufferedReader(reader);
        
        //Verifica se o arquivo não está vazio
       while(true){   
            /* O Atributo Linha do Tipo String, é testado no arquivo, ou seja, se no 
             arquivo não estiver nada o programa é abortado e imprime a mensagem */
            
            String linha = buffer.readLine();
            if(linha==null){
            System.out.println("O Arquivo Está Vazio");    
                break;
            }
            System.out.println(linha);
        }
        is.close();
    } catch(IOException ex){
        System.out.println(ex.getMessage());
        
    }

[/code]

Sequência:

[SampleStarted]
DateTimeStamp=20/08/2007,06:24:13
ArticleKey=5103823150
Job=0842659, 1
UserName=004600
SampleRequestedPieces=1

[Counter]
DateTimeStamp=20/08/2007,06:24:13
Wire=WK0075BRVD, 63855742, 63169427
Terminal=2133800970, 160131, 155389
Terminal=2133801160, 712751, 698894
Seal=2303800490, 156965, 152301
Seal=2303800570, 691420, 677561

[SampleTerminated]
DateTimeStamp=20/08/2007,06:24:23
ArticleKey=5103823150
Job=0842659, 1
UserName=004600
SampleRequestedPieces=1

[Counter]
DateTimeStamp=20/08/2007,06:24:23
Wire=WK0075BRVD, 63856062, 63169427
Terminal=2133800970, 160132, 155389
Terminal=2133801160, 712752, 698894
Seal=2303800490, 156966, 152301
Seal=2303800570, 691421, 677561

[SampleStarted]
DateTimeStamp=20/08/2007,06:25:57
ArticleKey=5103823150
Job=0842659, 1
UserName=004600
SampleRequestedPieces=1

[Counter]
DateTimeStamp=20/08/2007,06:25:57
Wire=WK0075BRVD, 63856062, 63169427
Terminal=2133800970, 160132, 155389
Terminal=2133801160, 712752, 698894
Seal=2303800490, 156966, 152301
Seal=2303800570, 691421, 677561

[SampleTerminated]
DateTimeStamp=20/08/2007,06:26:07
ArticleKey=5103823150
Job=0842659, 1
UserName=004600
SampleRequestedPieces=1

Então eu tenho que fazer uma condição dentro do meu código que verifique essa Sequência: ([SampleStarted] && [Counter] && [SampleTerminated]). Como faço isso? Aguardo respostas.

Use o método contains para cada linha encontrada, e cuidado com esse wile(true);
prefira algo assim:

BufferedReader leitor = new BufferedReader(reader);
String valor = null;
while((valor = leitor.readLine())!=null){
   if(valor.contains("DateTimeStamp=20/08/2007,06:24:13 ")){
       ..vai montando sua lógica
   }
}

Para casos mais complexos use Expressão Regular.

Olá,

Essa estrutura de arquivo texto é o famoso INI.

Para java, em uma breve busca encontrei essa API aqui:

http://ini4j.sourceforge.net

Peguei um exemplo lá:

public class IniSample
{
    public static void main(String[] args) throws Exception
    {
        String filename = args.length > 0 ? args[0] : "dwarfs.ini";
        Ini ini = new Ini(new FileReader(filename));

        for(String key : ini.get("sleepy").keySet())
        {
            System.out.println("sleepy/" + key + " = " + ini.get("sleepy").fetch(key));
        }
        
    }
}

sds

Prezados,

Eu tenho que verificar esses cabeçalhos, na sequência ([SampleStarted] && [Counter] && [SampleTerminated] )
, pois se a sequência não for essa, o arquivo está Mal formado. Como posso fazer isso.

Estive lendo alguns materiais e vi que posso resolver com Expressões Regulares, alguèm poderia postaralguma exemplo que utilize-as. Fico no aguardo.

Vamos supor que você precisa identificar o número de um cartão no meio de uma linha qualquer, no formato 00.00.00000000-0:

public static void main(String[] args) {
		String valor = "aaaaxxxxx000000 *** 12.34.12345678-10 **&&aaa0000aaaaaaa";
		Pattern patternUserCard = Pattern.compile("([0-9]{1,2}\\.[0-9]{1,2}\\.[0-9]{1,8}-[0-9]{1})");
		Matcher matcherUserCard = patternUserCard.matcher(valor);
		while(matcherUserCard.find()){
			System.out.println(valor.substring(matcherUserCard.start(), matcherUserCard.end()));
		}
}

Esse material é execelente:
http://guia-er.sourceforge.net/

Pessoal tentei fazer mais não obtive resultados. Alguém poderia me falar como proceder, para que possa resolver esse problema?

Tenho um arquivo TXT e nele eu tenho que procurar uma sequência, para saber se o arquivo foi mal formado ou não. Já estou lendo todo o arquivo, só não estpu conseguindo fazer essa verificação, para saber se está tudo bem com o arquivo, para isso tenho que verificar a sequência.

Sequência a ser verificada: [SampleStarted] && [Counter] && [SampleTerminated]

Parte do Arquivo TXT

[SampleStarted]
DateTimeStamp=20/08/2007,06:24:13
ArticleKey=5103823150
Job=0842659, 1
UserName=004600
SampleRequestedPieces=1

[Counter]
DateTimeStamp=20/08/2007,06:24:13
Wire=WK0075BRVD, 63855742, 63169427
Terminal=2133800970, 160131, 155389
Terminal=2133801160, 712751, 698894
Seal=2303800490, 156965, 152301
Seal=2303800570, 691420, 677561

[SampleTerminated]
DateTimeStamp=20/08/2007,06:24:23
ArticleKey=5103823150
Job=0842659, 1
UserName=004600
SampleRequestedPieces=1

O arquivo terá que ter essa sequência sempre. Então como eu faço para verificar essa sequência no Arquivo TXT.