Manipulação de arquivos txt em java - Eclipse

5 respostas
java
M

Boa noite, estou tentando criar um menu no console do meu java com as seguintes opções:

1 - Para inserir nome no arquivo, o qual eu queria gerar uma caixa de diálogo para essa ação.

2 - Para exibir todos os nomes do arquivo, os nomes digitados na opção 1 que aparecem no arquivo txt.

3 - Para apagar todos os campos digitados nos arquivos.

A única coisa que consegui fazer foi criar a janela de diálogo para digitar algo no arquivo de texto, mas mesmo assim não consegui integrá-la em um menu.

Meu código:

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;

import java.util.Scanner;
import javax.swing.JOptionPane;

    public class Principal {

    	public static void main(String[] args) {
    		Path local = Paths.get("C:/Users/seunomedeusuario/Desktop/Arquivo de Texto.txt");
    		String texto = JOptionPane.showInputDialog("O que quer escrever no bloco de notas?");
    		byte[] textoEmByte = texto.getBytes();
    		try {
    			
    			Files.write(local, textoEmByte);

    	}catch(Exception erro){
    		
    	}
    	}
    }

5 Respostas

M

A caixa de diálogo que você está usando é apenas um componente que apresentará um campo e retornará o valor digitado nesse campo, bem como o botão que o usuário apertou (ok, cancel, yes, no, etc).

Pelo que entendi, você quer criar um bloco de notas, certo?

Nesse caso, estude sobre JFrames e outros componentes do swing.

M

Entendi amigo, obrigado!
Acabei fazendo desta maneira:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Scanner;

public class Principal {

	public static void main(String[] args) throws IOException {
		
		Scanner teclado = new Scanner(System.in);
		File arquivo = new File("C:\\Users\\********\\Desktop\\Projeto");
		
		if(!arquivo.exists()) {
			arquivo.createNewFile();
		}
		System.out.println("DIGITE: ");
		System.out.println("1 - Para inserir nome no arquivo; \n 2 - Para exbir todos os nomes do arquivo \n 3 - Para Apagar todo o arquivo");
		int codigo = teclado.nextInt();
		
		if(codigo == 1) {
			FileWriter fileWriter = new FileWriter(arquivo.getAbsoluteFile());
			BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
			System.out.println("Escreva algo no arquivo: ");
			bufferedWriter.write(teclado.next());
			bufferedWriter.close();
		}
		else if(codigo == 2) {
			System.out.println("Nomes no arquivo: ");
			FileReader fileReader = new FileReader(arquivo);
			BufferedReader bufferedReader = new BufferedReader(fileReader);
			String linha;
			while((linha = bufferedReader.readLine()) != null) {
				System.out.println(linha);
			}
		}
		else if(codigo == 3) {
			System.out.println("O arquivo foi limpado!");
			Writer clean = new BufferedWriter(new FileWriter(arquivo));
			clean.close();
		}
	}

}

Agora eu queria saber como eu poderia fazer para o menu pedir um nova opção sem precisar ser reiniciado, entende? Tipo um looping.

M

Você mesmo já respondeu. Coloca dentro de um loopingl

M

no caso eu teria que criar uma variável contador, e fazer o que mais? qual seria melhor usar (while, for…)? onde esse contador teria que ser chamado (qual posição)?
Pq em java eu ainda sou muito leigo na linguagem.

S

Isso não é duvida de linguagem e sim de lógica.

Faz um do-while:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Scanner;

public class Principal {

    private static final Scanner IN = new Scanner(System.in);
    private static final PrintStream OUT = System.out;

    private static final int INSERIR_NOME = 1;
    private static final int EXIBIR_NOMES = 2;
    private static final int LIMPAR_ARQUIVO = 3;
    private static final int SAIR = 4;

    public static void main(String[] args) throws IOException {

        File arquivo = new File("C:\\Users\\********\\Desktop\\Projeto");
        if (!arquivo.exists()) {
            arquivo.createNewFile();
        }
        int codigo = 0;
        do {
            OUT.println("DIGITE: ");
            OUT.println(INSERIR_NOME   + " - Para inserir nome no arquivo\n"
                      + EXIBIR_NOMES   + " - Para exbir todos os nomes do arquivo\n"
                      + LIMPAR_ARQUIVO + " - Para apagar todo o arquivo\n"
                      + SAIR           + " - Para sair");
            codigo = Integer.parseInt(IN.nextLine());

            switch (codigo) {
                case INSERIR_NOME:
                    PrintWriter writer = new PrintWriter(new FileWriter(arquivo));
                    OUT.println("Escreva algo no arquivo: ");
                    writer.println(IN.nextLine());
                    writer.flush();
                    writer.close();
                    break;
                case EXIBIR_NOMES:
                    OUT.println("Nomes no arquivo: ");
                    BufferedReader reader = new BufferedReader(new FileReader(arquivo));
                    String linha;
                    while ((linha = reader.readLine()) != null) {
                        OUT.println(linha);
                    }
                    reader.close();
                    break;
                case LIMPAR_ARQUIVO:
                    arquivo.delete();
                    arquivo.createNewFile();
                    OUT.println("O arquivo foi limpo!");
                    break;
            }
        } while (codigo != SAIR);
    }
}
Criado 20 de outubro de 2020
Ultima resposta 21 de out. de 2020
Respostas 5
Participantes 3