Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jr.vercosa

Dividir aquivo TXT em vários arquivos TXT - Java

Recommended Posts

Preciso Dividir este arquivo que está em anexo como imagem em dois, meu código lê linha a linha e quando vai criar os novos arquivos.txt ele cria um arquivo para cada linha, sendo que, o que eu preciso é que ele separe sempre que encontrar o número 1 na primeira posição da linha, ou seja, quando a linha começar com 1 será o novo arquivo e quando a linha começar com 3 será a ultima linha de cada arquivo, ou seja, cada intervalo de linhas que a primeira linha comece com 1 e a linha comece com 3 será um novo arquivo contendo as linhas, no caso desse arquivo em anexo os arquivos serão separado de 3 em 3 linha de acordo com a regra, segue o código:

public static void main(String[] args) throws IOException {
InputStream is = new FileInputStream("ARQUIVO.TXT");
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

String linha = br.readLine();
int numeroArquivo = 1;

while (linha != null) {
File file = new File("ARQUIVO" + numeroArquivo + ".TXT");
OutputStream os = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);

if (!linha.contains("P") && linha.trim().length() == 11) {
bw.append(linha);
linha = null;
} else {
bw.append(linha);
bw.newLine();
linha = br.readLine();
}
numeroArquivo++;
bw.close();
}
br.close();
//bw.close();
}

458404-20151014-154415.png

Compartilhar este post


Link para o post
Compartilhar em outros sites
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;

public class Main {
    
    /* Localização e nome do arquivo que será copiado. */
    private final String FILE_PATH = "C:\\teste.txt";

    /* Localização onde deve ser criado os novos: Arquivo1, Arquivo2... */
    private final String DESTINY_PATH = "C:\\Users\\JrVercosa\\Desktop";

    public Main() {
        start();
    }
    
    private void write(int index, String content){
        
        String fileName = "Arquivo" + index + ".txt";
        File file = new File(DESTINY_PATH, fileName);
        
        try (PrintWriter writer = new PrintWriter(file)) {
            writer.append(content);
        } catch (FileNotFoundException err){}
    }
    
    private void start(){
        int index = 1;
        
        File origin = new File(FILE_PATH);
        try {
            StringBuilder builder = new StringBuilder();
            try (Scanner scanner = new Scanner(origin, "UTF-8")) {
                while(scanner.hasNextLine()){
                    
                    String line = scanner.nextLine();
                    if(!line.isEmpty()){
                        builder.append(line)
                               .append(System.lineSeparator());
                        continue;
                    }
                    write(index, builder.toString());
                    builder = new StringBuilder();
                    index++;
                }
                write(index, builder.toString());
            }
        } catch (FileNotFoundException err){}
    }
    
    public static void main(String[] args) {
        new Main();
    }
}

Fiz meio correndo, por isso nem cheguei a documentar o código, mas pode perguntar o que não tiver entendido. Assim que eu estiver com um tempo volto aqui e melhoro a minha resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Estou escrevendo um Sistema Java Web e quando clico no Botão Salvar, o Java acusa esse erro:

      ERROR: Cannot invoke "Object.toString()" because the return value of "java.util.Map.get(Object)" is null
       
      Já tentei de várias formas resolver esse problema, mas não estou conseguindo.

      Por favor, alguém pode me ajudar identificar a origem e resolver o problema acima ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Estou enfrentando um problema que não consigo entender.

      Após Instalar o MySql versão 8.0.36, funciona corretamente realizando as conexões.

      O problema é:
      ---[ após reiniciar o micro, o MySql não faz as conexões.
      --[ tenta localizar este arquivo, mas não acha: my.ini
       
      Onde localizo ou configuro este arquivo na Pasta MySql ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, preciso de ajuda em Relação a Instalar o Jasper Reports no Eclipse, pois a opção de Eclipse Marketplace, não encontra para instalar.
       
      Já tentei de todas as formas mas não consegui, alguém conhece alguma rotina explicando este procedimento ?
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amantes da informática.
       
      Saudações.
       
      Estou usando o Eclipse Mars versão 4.5.0  e o 4.5.2, acredito que deva ter versões mais novas. 
      Sou novato em JAVA e estou encontrando alguns problema em Instalação de alguns plugins, como por exemplo:
       
      1) quando tento instalar o JBoss Tools através do Eclipse Marteplace, o Eclipse não o encontra na lista de plugins.
      2) se tento instalar através do Install New Software, abaixa alguns arquivos, mas também não instala o JBoss.
      3) se abro o site e arrasto o download para a área de trabalho do Eclipse, também não instala o JBoss.
       
      Caros amigos, existe outra alguma forma de instalar o JBoss Tools no Eclipse e como seria ?
       
      Grato,
       
      Cesar
       
       
    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.