Post

Created by @nathanedwards
 at November 1st 2023, 11:02:25 am.

Question:

You are tasked with creating a program that reads data from a text file and writes the data to another file. The input file contains a list of names and their corresponding ages, formatted as follows:

John,23
Emily,19
Michael,27
Sara,21

Write a method copy_data(infile, outfile) that takes two string parameters infile and outfile. The infile parameter is the name of the input file and the outfile parameter is the name of the output file. The method should read the data from the input file and write it to the output file in the same format.

For example, if the input file contains the data as shown above, then the output file should also contain the same data. Assume that both the input and output files already exist.

Write the complete copy_data(infile, outfile) method to accomplish this task.

Example Usage:

copy_data("input.txt", "output.txt");

Answer:

public static void copy_data(String infile, String outfile) {
    try {
        // Create FileReader and FileWriter objects
        FileReader reader = new FileReader(infile);
        FileWriter writer = new FileWriter(outfile);

        // Create BufferedReader and BufferedWriter objects
        BufferedReader br = new BufferedReader(reader);
        BufferedWriter bw = new BufferedWriter(writer);

        // Read the file line by line
        String line;
        while ((line = br.readLine()) != null) {
            // Write the line to the output file
            bw.write(line);
            bw.newLine(); // Add a new line in the output file
        }

        // Close the file resources
        br.close();
        bw.close();

        System.out.println("Data copied successfully!");
    } catch (IOException e) {
        System.out.println("An error occurred: " + e.getMessage());
    }
}

Explanation:

  1. The copy_data method takes infile and outfile as parameters.
  2. Inside the method, we create a FileReader object to read the data from the input file, and a FileWriter object to write the data to the output file.
  3. We also create a BufferedReader object to read the file line by line, and a BufferedWriter object to write the data line by line.
  4. Using a while loop, we read each line from the input file using the readLine method of BufferedReader. If the line is not null, we write it to the output file using the write method of BufferedWriter. Additionally, we add a new line using the newLine method to separate the lines in the output file.
  5. After reading and writing all the data, we close the file resources using the close method of both BufferedReader and BufferedWriter.
  6. If any exception occurs during the process (e.g., file not found), it is caught in the catch block and an appropriate error message is displayed.
  7. Finally, if the data is copied successfully, a success message is printed to the console.