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

8 respostas
waleria

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:

8 Respostas

ambuzr

Voce sabe Ler e Gravar arquivos de texto?

kaique

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.

M

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 !

waleria

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:

T

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.

Marky.Vasconcelos

Ou um line.startsWith(“A”).

J

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 =)

V

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

[email removido]

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 : [email removido]         usuario : ahuahu     servidor : heaahe      terminação : .com
email : caralho@_como.faz.iso       usuario : caralho     servidor : _como       terminação : .iso
email : [email removido]	           usuario : victor       servidor : masssa      terminação : .com
Criado 13 de maio de 2009
Ultima resposta 17 de jul. de 2013
Respostas 8
Participantes 8