Search code examples
javafilefilewriter

Writing a file to another file


When I tried to run OUT.TXT it was alwasy empty. Can you please assist me in finding out why? Also SPY.LOG lines are not ordinary, can you assit with a way to fix those lines also?

package burak;
import java.io.*;

public class Yucal {
    public static void main(String [] args) {

        String fileName = "spy.log";
        String line;
        try {

            FileReader fileReader =  new FileReader(fileName);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            while((line = bufferedReader.readLine()) != null)
            {
            try{
                  FileWriter fstream = new FileWriter("out.txt");
                  BufferedWriter out = new BufferedWriter(fstream);
                  out.write(line);
                  out.close();
                  }
            catch (Exception e){
                  System.err.println("Error: " + e.getMessage());
                  }
            System.out.printf("%65s\n", line);
            }
            bufferedReader.close();         
        }
        catch(FileNotFoundException ex) {
            System.out.println(
                "Unable to open file '" + 
                fileName + "'");                
        }
        catch(IOException ex) {
            System.out.println("Error reading file '" + fileName + "'");           }
    }

Solution

  • Few changes

    FileReader fileReader = new FileReader(fileName);
    BufferedReader bufferedReader = new BufferedReader(fileReader);
    FileWriter fstream = new FileWriter("out.txt");
    BufferedWriter out = new BufferedWriter(fstream);
    while ((line = bufferedReader.readLine()) != null) {
        try {
            out.write(line);
            out.write("\n");
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
        }
        System.out.printf("%65s\n", line);
    }
    out.close();
    bufferedReader.close();
    

    The mistake was you've opened FileWriter fstream = new FileWriter("out.txt"); within while loop. It must be outside.