[RESOLVIDO] Dúvida utilização de arquivos no Java

6 respostas
java
M

Boa noite, podem me ajudar? Comecei recentemente a estudar programação e estou tendo dificuldade para lidar com arquivos, não estou conseguindo escrever nos arquivos. Acredito que a parte da leitura esteja certa, mas como não tem nada para ler ocorre o erro. Sim, sei que poderia utilizar o hasNext(); no condicional para não travar o programa. Por favor, me ajudem

package AnotherTests;

import javax.swing.JOptionPane;

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Scanner;

public class TestOne {

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

    File file = new File("NewFile.txt");
    Scanner scanF = new Scanner(file);
    PrintWriter writer  = new PrintWriter(file);

    writer.println("This is the first line.");
    writer.println("This is the second line.");


    if (file.exists()) {
        JOptionPane.showMessageDialog(null, "Exists");

        JOptionPane.showMessageDialog(null, ("FirstLineContent: "+scanF.nextLine()));

    }else {
        JOptionPane.showMessageDialog(null, "Doesn't exists");
    }
}

}

6 Respostas

R

Vc está tentando ler um arquivo que não existe, o correto seria:

public static void main(String[] args) throws IOException {
    new Exemplo().arquivo();
}

public void arquivo() {
    try {
        File file = new File("arquivo.txt");
        if (file.exists()) { //se existir
            System.out.println("Arquivo Existe\n");
            BufferedReader br = new BufferedReader(new FileReader(file));
            while (br.ready()) {
                String linha = br.readLine();
                System.out.println(linha);
            }
            br.close();
        } else { //senão
            FileWriter arq = new FileWriter(file);
            PrintWriter gravarArq = new PrintWriter(arq);

            gravarArq.println("Primeira Linha.");
            gravarArq.println("Segunda Linha.");

            arq.close();

            System.out.println("Arquivo salvo com sucesso");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
M

Eu não entendi quase nada dos outros métodos do Buffer e do FileWriter, mas o arquivo já se encontra feito. Na verdade eu já o havia escrito anteriormente e ele está lendo normalmente nos meus novos testes. O problema se encontra no momento de escrevê-lo. Mas tentarei utilizar os métodos que você utilizou

R

Cara, esse fonte que eu passei é do DevMedia, há diversas formas de se fazer o que vc quer:

PrintWriter escrever = new PrintWriter(file); //pega o arquivo
escrever.println("1. Java"); //escreve
escrever.println("2. JavaScript"); //escreve
escrever.println("3. PHP"); //escreve
escrever.println("4. Pyhton"); //escreve
escrever.println("5. Objective C"); //escreve
escrever.close(); //fecha o arquivo, para poder manipular depois

//USA UM OU OUTRO, SE TENTAR OS DOIS, ELE VAI SALVAR UM ARQUIVO EM BRANCO

FileWriter inserindo = new FileWriter(file); //mesma coisa de cima
escrever.write("1. Java");
escrever.write("2. JavaScript");
escrever.write("3. PHP");
escrever.write("4. Pyhton");
escrever.write("5. Objective C");
inserindo.close();

Explicação sobre os métodos:

https://www.devmedia.com.br/classes-de-entrada-e-saida-de-dados-em-java/26029

M

Tranquilo! Muito obrigado pela ajuda. Mas acabei utilizando o seguinte:

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Scanner;

public class TestTwo {

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

    File file = new File("NewArchive.txt");
    PrintWriter writer = new PrintWriter(file);
    Scanner scan = new Scanner(System.in);
    Scanner scanFile = new Scanner(file);

    writer.println("This is the first line");
    writer.println("This is the second line");

    writer.close();

    System.out.println("Step1: Done! Press 1 to read!");
    int stop = scan.nextInt();

    String line1 = scanFile.nextLine();
    String line2 = scanFile.nextLine();

    System.out.println("Line 1 content  = " + line1);
    System.out.println("Line 2 content  = " + line2);

}

}

M

Obs: o problema do meu programa era o “.close()” . Visualizei depois de muitos testes que se não fechar a variável de pesquisa ele não salva no arquivo, apenas isso. kkkkkk Sim é revoltante!

R

Kkkkkkkk boa! Pelo menos agora vc não esquece mais

Criado 3 de abril de 2019
Ultima resposta 3 de abr. de 2019
Respostas 6
Participantes 2