Como dividir um Txt em outros Txt's?! [RESOLVIDO]

Olá pessoal preciso de ajuda, de novo! :wink:
Bom, tenho que ler um Txt’s e dividi-lo em outros Txt’s, já procurei sobre o StringTokenizer, sobre o split, mas ainda não consegui fazer o q quero.

O arquivo é tipo assim:

A154310 001BANCO DO BRASIL 2009040601125404DEBITO
D00001784684 20000000073811900001784684
Z00000300000000000000000
A154310 001BANCO DO BRASIL 2009040601125504DEBITO
E00003486575 20090410000000000000340003
Z00000300000000000003400

Quero Transforma-lo em 2 arquivos txt. pegando do A até o antes do próximo A.
Entenderam?!
Queria saber se tem outro metodo pra usar além desses 2 e como usar?
Desde já agradeço a atenção. :smiley:

Voce sabe Ler e Gravar arquivos de texto?

Cara, você consegue isso de uma maneira bem simples utilizando FileInputStream e FileOutputStream. Dá uma estudada nessas duas classes e tenta utilizá-las na sua solução…

[]'s.

Oi, recentemente fiz algo parecido…

voce pode usar os metodos Bufferedreader e o Bufferedwriter para ler e escrever e para separar de um “A” até outro “A” você pode usar o Split

Valeu !

Galera eu consigo ler e gravar, o problema é separar os pedaços que eu quero, não sei como usar o split direito se alguém puder mandar um exemplo de como pegar de A a A, sem sumir com eles eu agradeço. :smiley:

No seu caso não adianta usar split. Você tem de testar o primeiro caracter de cada linha, para ver se é ‘A’.

O que você tem de fazer é puramente braçal; é só pensar um pouco e fazer. Não tem nada de expressão regular, split ou outra coisa. Um mero charAt (0) já dá conta do recado.

Ou um line.startsWith(“A”).

Olá Waléria, boa noite! Estou com um problema igual ao seu! Ele foi resolvido? Você conseguiu ajuda? Se sim, você pode me enviar a resposta que deu certo? Desde já agradeço =)

Cuidado com isso, primeiro você deve procurar por padrões <-
o que você quer dividir provavelmente ele deve conter alguma coisa em padrão

por exemplo imagine um livro ele tem uma estrutura de parágrafos (qual é o padrão ?)
1º começa com letra maiúscula
2º termina com "."(ponto)
3º depois do ponto a linha tem que terminar

isso é um padrão existe um negocio chamado de "Expressões Regulares" (ou abreviado "regex") a partir dele você determina um padrão de busca e ele procura por esse padrão depois de achado você pode fazer várias coisas
Por exemplo imagine que gostaríamos de pegar cada paragrafo e colocar num arquivo você criaria o padrão de um paragrafo e dividiria os itens encontrados.

Falando em Java agora :
O pacote java java.util.regex da suporte para o uso do regex.

mas para isso funcionar você precisa definir o padrão, vou da um outro exemplo de padrão Email

o que que todo email tem ?

se você olhar todo email é + ou - assim

ahuahu@ahuahu.ahu

observe que todo email tem o @ e um ponto sendo necessariamente o @ tem que vir primeiro além disso depois do arroba tem outros limites, não se pode usar caracteres especias depois de arroba como o acentos, trena, coxetes parenteses, etc …

alem disso antes do arroba precisa ter necessariamente uma letra, entre o arroba e o ponto tem que ter pelo menos uma letra também, depois do ponto tem que ter pelo menos 2 letrar, tudo isso forma um padrão de um Email
esse padrão escrito para regex ficaria assim

([\w,\.]+)@(\w+)(\.{1}\w+){1,2}

sim isso é complicado pra caralho de entender, se você não conhece o regex vá estudar, e compre livros, por que ele é um assunto muito grande e importante

agora antes de ir eu vou posta um código java usando esse regex que mostrei xD

        String temp = "PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0\n"
                + "L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPjwvaGVhZD48Ym9keSBjb250ZW50ZWRpdGFibGU9InRydWUi\n"
                + "Pjxicj48YnI+ahuahu@heaahe.comPGJyPkNvbWluZyBzb29uOiBiaWdnZXIgZHJvbmVzIDxicj5TQUxPTiB8IDE1IERF\n"
                + "IE1BSU8gREUgMjAxMjxicj5odHRwOi8vcHVsc2UubWUvcy85aFhzcCA8YnI+caralho@_como.faz.isoPGJyPlRoZSBGQUEg\n"
                + "aGFzIGRlY2lkZWQgdG8gYWxsb3cgbGFyZ2VyIGRyb25lcyBmbHkgaW4gVS5TLiBhaXJzcGFjZSBs\n"
                + "ZWlhIG1haXM8YnI+PGJyPi0tLTxicj48YnI+aHR0cDovL3-victor@masssa.comB1bHNlLm1lPGJyPjxicj5FbnZpYWRv\n"
                + "IGRvIHRhYmxldCBTYW1zdW5nIDwvYm9keT48L2h0bWw+\n";
        
        Matcher mat = Pattern.compile("([\w,\.]+)@(\w+)(\.{1}\w{2,3}){1,2}").matcher(temp);
        while(mat.find()){
            System.out.println("email : " + mat.group() + "\tusuario : " + mat.group(1) + "\tservidor : " + mat.group(2) + "\tterminação : " + mat.group(3));
        }

aleatoriamente eu coloquei 3 emails nessa String, usando o regex eu consigo pegar eles

Saida :

email : ahuahu@heaahe.com         usuario : ahuahu     servidor : heaahe      terminação : .com
email : caralho@_como.faz.iso       usuario : caralho     servidor : _como       terminação : .iso
email : victor@masssa.com	           usuario : victor       servidor : masssa      terminação : .com