Eu tenho um arquivo TXT dividido em colunas e preciso salvar algumas informações de uma determinada coluna deste arquivo e um segundo arquivo, pois a informação será sempre a mesma.
[b]Exemplo:
LALA LALA
LILI LILI
LOLO LOLO
Então, no exemplo acima, eu precisaria pegar da segunda coluna somente a informação LILI mas preciso que seja pego a linha inteira pois há outros dados de outras colunas ao lado dela que preciso salvar também.[/b]
Será que alguém poderia me ajudar ??
PS: Eu lembro que em VB existe uma opção chamada MID para que você obtenha linha e coluna, porém no java eu não conheço.
Já tentou usar o método split da String? Ele retorna um array de acordo com o que você passa dentro do parametro que por sinal pode ser uma expressão regular… se os campos forem separados por TAB você pode fazer o split("\t") que retornará as colunas de uma linha
Então no caso, com este método split eu consigo passar uma palavra para que na hora da gravação do arquivo, seja colocado nele só as as linhas que na coluna específica tenham aquela palavra ?
O split vai quebrar a coluna num separador. Então vamos supor que vc tenha a linha:
LALA LILI LOLO LULU
Um split nessa linha no " " irá retornar um array de strings, contendo:
String[0] = “LALA”;
String[1] = “LILI”;
String[2] = “LOLO”;
String[3] = “LULU”;
Outra coisa, a forma mais fácil de ler um arquivo linha-a-linha é através do Scanner.
Seu método processamento pode ficar assim:
public void processamento() {
try {
Scanner reader = new Scanner(arq_entrada);
PrintWriter writer = new PrintWriter(new FileWriter(arq_saida));
while (reader.hasNextLines()) {
String line = reader.nextLine();
if (line.contains("ABENDED")) { //Gravando só os dados da linha que contém "ABENDED"
writer.println(line);
}
}
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace(); //Não ignore exceções!
}
}
Agora só mais uma dúvida, este processo será executado com diversos arquivos que tem as mesmas informações, o que vai mudar é apenas a data de dentro do arquivo, como posso fazer para que seja lido todos os arquivos e as informações irem acumulando no mesmo novo arquivo criado ?
Ou vc usa o mesmo PrintWriter para todos, ou vc passa true no segundo parâmetro do construtor do FileWriter.
Esse true significa que vc vai fazer “append” no arquivo.
Porém, utilizando a sua dica para obter os dados que preciso de um arquivo e salvar no outro, o que está acontecendo é que o arquivo que receberá os dados está ficando vazio, e não tenho ideia do que pode estar acontecendo ?
Coloquei o flush conforme código abaixo, porém ele ainda está gerando o arquivo vazio.
package processamento_arq;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Arquivo {
private String arq_entrada;
private String arq_saida;
public Arquivo (String arq_entrada, String arq_saida){
this.arq_entrada = arq_entrada;
this.arq_saida = arq_saida;
}
public void processamento() {
try {
Scanner reader = new Scanner(arq_entrada);
PrintWriter writer = new PrintWriter(new FileWriter(arq_saida));
while (reader.hasNextLine()) {
String line = reader.nextLine();
if (line.contains("ABENDED")) {
writer.println(line);
}
}
writer.flush();
reader.close();
writer.close();
} catch (IOException e) {
}
}
public class Processamento_Arq {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Arquivo arq = new Arquivo("Abend_HG.txt","HG_Abend.txt");
arq.processamento();
}
}
Uma dúvida, eu tentei colocar o mesmo parãmetro que o seuFileWriter writer = new PrintWriter(new FileWriter(arq_saida)); , mas o Netbeans dá erro informando para alterar para PrinterWriter.
Tá faltando alguma coisa ?
Você tem certeza que o java está conseguindo ver o arquivo de entrada? Pq nem sempre o caminho “.” dele é o que esperamos ser, especialmente se vc estiver rodando da IDE.
Vou fazer o seguiinte: Vou olhar novamente o código e tentar indentificar o problema.
Se funcionar, já posto aqui para seu conhecimento.
E valeu por toda sua ajuda…
E só mais uma coisa, como é que posso fazer para que o meu programa depois de funcionando certinho, possa pegar os dados do arquivo e inserir em uma planilha excel já criada, tipo assim, ele ira pegar o dados e adicionar na planilha na próxima linha disponível? tipo acumulando os dados ?