Ler e escrever arquivo TXT

Olá?!! … estou tendo uma dificuldade em meu código. No caso, estou pegando o arquivo “prova.txt” … lendo ele para poder fazer as operações e depois criando o “gabarito.txt” para gravar o resultado dessas operações. Mais no caso, não estou conseguindo colocar nesse arquivo o resultado… quer dizer… fica repetindo o mesmo resultado a todos… mais se eu coloco um system.out… ele imprime corretamente… bom… vou colocar o meu código “LerArquivo” e o “EscrevaArquivos”.

//LerArquivo

public class LerArquivo
{

    public LerArquivo ()
    {
    }

    public void lerarquivo (File file)
    {
        try
        {
            String texto;
            FileReader fileR = new FileReader (file);
            BufferedReader buffR = new BufferedReader (fileR);
            int result = 0;
            int valor1 = 0;


            Calcula calc = new Calcula ();
            EscrevaArquivos esc = new EscrevaArquivos();
            while ((texto = buffR.readLine ()) != null)
            {
                int cont = 0;

                for (int tamanho1 = 0; tamanho1 < texto.length (); tamanho1++)
                {
                    char[] vetor = texto.toCharArray ();
                    System.out.print (vetor[tamanho1]);
                    result = vetor[0] - 48;

                    for (int tamanho2 = 0; tamanho2 < vetor.length; tamanho2++)
                    {
                        if (vetor[tamanho2] == '+')
                        {
                            valor1 = vetor[tamanho2+2]-48;
                           
                            result = calc.somar (result, valor1);
                            tamanho2 += 1;
                            cont++;
                        } else if (vetor[tamanho2] == '-')
                        {
                            
                            valor1 = vetor[tamanho2+2]-48;
                            result = calc.subtrair (result, valor1);
                            tamanho2 += 1;
                            cont++;
                        } else if (vetor[tamanho2] == '*')
                        {
                            valor1 = vetor[tamanho2+2]-48;

                            result = calc.multiplicar (result, valor1);
                            tamanho2 += 1;
                            cont++;
                        } else if (vetor[tamanho2] == '/')
                        {
                            valor1 = vetor[tamanho2+2]-48;

                            result = (int) calc.dividir (result, valor1);
                            tamanho2 += 1;
                            cont++;
                        } 
                    }
                }
                if(cont != 0){
                    esc.escrever (result);
                    
                }else{
                    System.out.println (" ");
                }
            }
            
            System.out.println ("");

        } catch (FileNotFoundException ex)
        {
            Logger.getLogger (LerArquivo.class.getName ()).log (Level.SEVERE, null, ex);
        } catch (IOException er)
        {
            System.out.println ("Não foi possivel ler o arquivo!");
        }

    }
}

//EscrevaArquivo

public class EscrevaArquivos
{

    public EscrevaArquivos ()
    {
    }

    public void escrever (int res)
    {

        System.out.println (" = " + res);

        String result = Integer.toString (res);
        //String endereco = JOptionPane.showInputDialog ("Digite o endereco do arquivos");
        //arquivo para ser lido
        File arquivo1 = new File ("prova.txt");//cria o file do arquivo informado
        //arquivo para escrita
        File arquivo2 = new File ("gabarito.txt");//definindo o nome do locar do arquivo
        try
        {
            arquivo2.createNewFile ();//arquivo criado
           /*LEITURA*/
            FileReader fileR = new FileReader (arquivo1);//arquivo ppara ser lido
            BufferedReader buffR = new BufferedReader (fileR);//arquivo buferizado
           /*ESCREVER*/
            FileWriter fileW = new FileWriter (arquivo2);//arquivo para escrita
            BufferedWriter buffW = new BufferedWriter (fileW);


            //enquanto tiver leitura
            while (buffR.ready ())
            {
                
                System.out.println (">"+result+"<");
                //if (linha != null)
               // {
                    buffW.write (buffR.readLine ()+" = "+result);//Leia um arquivo e Escreva no outro
                    buffW.newLine ();//pula uma linha no arquivoescrever (result);
                //} else
                //{
                //    buffW.newLine ();//pula uma linha no arquivoescrever (result);
               // }
            }
            //fechar o buff
            buffR.close ();
            buffW.close ();
        } catch (IOException io)
        {
        }
    }
}

se puderem dar uma força ai…
desde já agradeço pela atenção!!

no seu metodo escrever vc recebe o caractere lido do arquivo, so que em momento nenhum vc grava ele no arquivo. nao seria isso que esta faltando?

Colega,

Faça duas coisas no seu código “EscrevaArquivo”:
1 - Adicione alguma coisa no tratamento de exceção, caso contrário uma exceção pode ser capturada e vc nem saber que isso aconteceu.
2 - Certifique-se de usar o método flush() da classe BufferedWriter antes de chamar o close(). Como essa classe utiliza um buffer interno de 8kb, talvez ela nem tenha chegado a acessar o disco para escrever esses bytes (isso acontece quando o arquivo é muito pequeno).

1 curtida

Segue um exemplo simples, veja se te ajuda ai.

Ler arquivos:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class ReadFiles {
	private static File file = new File("Caminho do arquivo");
	
	private static final void read(File file) throws IOException{
		FileReader fileReader = new FileReader(file);
		BufferedReader reader = new BufferedReader(fileReader);
		String data = null;
		while((data = reader.readLine()) != null){
			System.out.println(data);
		}
		fileReader.close();
		reader.close();
	}
	
	public static void main(String[] args) {
		try{
			ReadFiles.read(file);
		}catch(IOException e){
			e.printStackTrace();
		}
	}
}

Escrever arquivos:


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class WriteFiles {
	private static final String path = "Caminho do arquivo";
	public static void main(String[] args) throws IOException {
		File file = new File(path);
		long begin = System.currentTimeMillis();
		BufferedWriter writer = new BufferedWriter(new FileWriter(file));
		writer.write("Arquivo gravado em : " + new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").format(new Date()));
		writer.newLine();
		writer.write("Caminho da gravação: " + path);
		writer.newLine();
		long end = System.currentTimeMillis();
		writer.write("Tempo de gravação: " + (end - begin) + "ms.");
		//Criando o conteúdo do arquivo
		writer.flush();
		//Fechando conexão e escrita do arquivo.
		writer.close();
		
		System.out.println("Arquivo gravado em: " + path);
	}
}

Flw.

1 curtida