Olá comunidade, sou novo em programação java. Estou tentando fazer uma aplicação que leia um arquivo .txt e ao abrir esse arquivo ele mostra no jTxtArea.
No Print, pelo compilador, mostra todo o conteudo do arquivo, mas ao tentar jogar no txtArea pega só a última linha, ajudem ai
Segue o código:
public void buscar(){
FileNameExtensionFilter fileNameExtensionFilter = new FileNameExtensionFilter(
“txt”, “txt”);
JFileChooser fc = new JFileChooser();
fc.setFileFilter(fileNameExtensionFilter);
fc.setDialogTitle(“Escolha o arquivo”);
int resposta = fc.showOpenDialog(null);
if(resposta == JFileChooser.APPROVE_OPTION){
File file = new File(fc.getSelectedFile().getAbsolutePath());
FileReader fis;
try {
fis = new FileReader(file);
BufferedReader bis = new BufferedReader(fis);
while(bis.ready()){
//System.out.println(bis.readLine()+"\n");
jTextArea1.setText(bis.readLine()+"\n");
}
bis.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
public void lerTXT() {
String nome = (pasta);
//System.out.printf("Conteúdo do arquivo texto:\n");
try {
FileReader arq = new FileReader(nome);
BufferedReader lerArq = new BufferedReader(arq);
String linha = lerArq.readLine();
// lê a primeira linha
// a variável "linha" recebe o valor "null" quando o processo
// de repetição atingir o final do arquivo texto
while (linha != null) {
//System.out.printf("%s\n", linha);
linha = lerArq.readLine(); // lê da segunda até a última linha
}
arq.close();
} catch (IOException e) {
System.err.printf("Erro na abertura do arquivo: %s.\n", e.getMessage());
}
System.out.println();
}
Onde está em negrito no .txt seria correspondente ao ano. Tenho um jtxtField onde passarei o ano para o usuario digitar. Gostaria de criar um Botão “Atualizar” por exemplo, que ao clicar limpasse as linhas anteriores, ou criasse um novo texto dentro do jTextArea. Alguma ideia? rsrs
No caso queria pegar de um arquivo .txt os dados da linha que o usuario entrar, por exemplo, ao digitar 2018 mostrar a linha apenas que contenham o 2018. Ou ao digitar 4 ele mostrar todas as linhas pra frente a partir da linha 4, entenderam? rs
Achei um método de ler as linhas porém lê uma por vez…
public void limpar()
{
try{
RandomAccessFile leitura = new RandomAccessFile(“texto.txt”,“r”);
leitura.seek(4); // numero da linha a ser exibida
String linha = leitura.readLine();
System.out.println(linha);
jTextArea1.setText(linha);
}
catch(IOException e)
{
e.printStackTrace();
}
}
Você pode adicionar cada linha do arquivo em um array de String.
Depois de ler todo o arquivo, você ve qual o ano que vai querer.
Para verificar qual elemento do array tem o ano desejado, você terá que iterar e então usar o método contains da classe String para verificar se aquele elemento possui a palavra (no caso o ano) que você quer, se tiver, você adiciona esse elemento do array ao texto do textArea
public void limpar(){
String nome[] = new String [1];
for(int i=0;i<1;i++){
nome[i]=jTextArea1.getText();
if(nome[i].contains(“2018”)){
System.out.println(nome[i]);
}
}
}
assim ele está mostrando todos os resultados ainda.
Pelo que percebi a variavel nome está pegando tudo que está no txtArea e atribuindo a ela, não está pegando linha por linha…
@Mike consegui fazer ler as linhas de 2018, porém só pelo System.out… Quando jogo no txtArea ele pega o ultimo valor
public void limpar(){
List<String> texto = new ArrayList();
String arquivoT = "texto.txt";
File arquivo = new File(arquivoT);
try {
BufferedReader in = new BufferedReader(new FileReader(arquivo));
String dados=null;
while (in.ready()) {
dados = in.readLine(); // aqui eu pego linha a linha do txt
texto.add(dados); // aqui eu armazeno a linha do txt em um List
if(dados.contains("2018")){
System.out.println("2018 = "+dados);// aqui mostra todos
jTextArea1.setText(dados);// aqui mostra o ultimo valor
}
}
in.close();
}catch (IOException e){
System.out.println(e);
}
}
Claro que só mostra o último, vc ta inserindo um novo valor. (Isso já foi comentado anteriormente).
Se você quer mostrar todas as ocorrências que possuem 2018, você deve concatenar o valor em uma variável e então dar o setText, ou no setText vc. usa o método getText e concatena com a variável dados.