Apagar ultima letra de arquivo TxT

14 respostas
S

Gente me ajuda a criar um codigo que quando eu executar ele, só vai apagar a ultima letra escrita

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
public class ApagarUltimaLetra {
public void projetoApagar() {
        try (BufferedWriter wr = new BufferedWriter(new FileWriter(new File("ArquivoXYZ.txt"), true))) {
            wr.write("Teste");
            wr.newLine();
            wr.write("Apagou");
            ////////////ABAIXO////////////
            System.out.println(wr.toString().substring(4, 29));
            ////////////EM CIMA////////////
            wr.flush();
            wr.close();
        } catch (IOException erro) {
            JOptionPane.showMessageDialog(null, erro.getMessage());
        }
    }
public static void main(String[] args) {
        ApagarUltimaLetra aut = new ApagarUltimaLetra();
        aut.projetoApagar();
    }
}

14 Respostas

R

O que você pode fazer é receber todo conteúdo do arquivo em uma String, e a partir dai você poderá fazer:

String novoTexto = textoArquivo; novoTexto = novoTexto.substring(0, novoTexto.length() - 1);

A segunda linha de código retira o último caractere(letra) da String, daí você limpa o conteúdo do arquivo e inseri o novoTexto já alterado.

S

Mas eu quero fazer como se fosse um botão de apagar (mas será um arquivo java), que eu nao precise abrir o arquivo alvo nem o modificar o código. Tem como me ajudar nisso?

R

Botão de apagar ? Então basta colocar um evento no botão chamando o método que apaga.

S

Eu estou usando isso:

public void nativeKeyPressed(NativeKeyEvent nke) {
String dados = NativeKeyEvent.getKeyText(nke.getKeyCode());
try (BufferedWriter writer = new BufferedWriter(new FileWriter(new File("ArquivoXYZ.txt"), true))){
if (nke.getKeyCode() == NativeKeyEvent.VC_BACKSPACE) {
////////////ABAIXO////////////
dados = dados.substring (0, dados.length() - 1);
////////////EM CIMA////////////
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}

O problema que não está apagando a ultima letra digitada

R

Você precisa jogar o conteúdo do arquivo em uma variável, onde você está fazendo isso ? Desculpe mas não consegui ver.

S

Como eu faço isso em uma forma simples? Eu uso o NetBeans, aqui está o Arquivo JAR do meu projeto: (retirado)

R

Estou no trabalho, não vou poder parar pra ver seu código, talvez a noite eu veja, mas você está usando algum código de terceiros ? Porque parece, essa classe NativeKey não é nativa do Java, nada contra, mas não conheço esse projeto. Outra coisa, você quer que isso ocorra ao digitar no teclado ou quando ele terminar de digitar ?

S

Tudo bem :slight_smile:
O código foi feito só por mim, inteiro. Essa classe NativeKey foi implementada automaticamente.
Eu quero assim, enquanto eu vou digitando o programa vai salvando tudo no TxT, mas quando eu apagar algo, quero que apague no arquivo de texto também.

R

Então, acho melhor você escrever tudo que quer e só no final você escreve no arquivo, pois ficar escrevendo e salvando no arquivo várias vezes é realizar muito I/O de modo a prejudicar a performance, por mais que seja um arquivo pequeno e um simples programa, você deve tentar fazer as coisas da melhor forma.

S

Não entendi. Eu to querendo fazer um programa em Java de Tempo Real, onde eu digito e ela salva.
Mas se o jeito que você disse for mais viável e tenha o mesmo objetivo, me ajuda a cria-lo?

R

Sim, hoje a noite vou chegar bem tarde em casa, moro no Amazonas, aqui o fuso horário é bem diferente do resto do Brasil, mas quando eu chegar se você estiver online, segue meu gmail: [email removido], lá a gente pode usar o chat para conversar, até mais, se caso alguém tiver uma solução pra você antes, nem esquente, precisa nem me falar nada, só deixa o aviso aqui que vou saber, até.

S

:slight_smile: Valeu!! Vou entrar em contato

R

Eu fiz um programinha teste com um botão e uma textarea, você vai escrevendo na textarea normalmente, quando quiser gravar no arquivo só clicar no botão “Gravar no Arquivo”, daí ele cria um arquivo chamado output.txt(ou abre se já existir) e insere o conteúdo do textarea nele, sempre sobreescrevendo o conteúdo anterior.

S

Agora me lembrei, eu coloquei a biblioteca JNativeHook.
Eu queria um código que não usasse JFrames ou qualquer janelas, porque o programa seria um Registrador, para ser usado como Backup.
O JAR estaria trabalhando em segundo plano.
Tem como me ajudar nisso?

Criado 30 de maio de 2016
Ultima resposta 31 de mai. de 2016
Respostas 14
Participantes 2