это неправильный ответ. Во-первых: нечего очищать - это ноль. Второе: Close выполняет flush () сам по себе. После того как я увидел комментарий - мы все делаем наши маленькие ошибки :-)

рен, что есть довольно простой ответ на этот вопрос, так что здесь мы идем.

Я пытаюсь использовать FileWriter для записи текста в файл. Моя программа считывает текст из уже существующего файла, указанного пользователем, а затем запрашивает, печатать ли текст в консоль или в новый файл, который также должен быть назван пользователем.

Я считаю, что моя проблема заключается в передаче FileWriter в метод FileOrConsole. Правильно ли я передаю или объявляю FileWriter в методе FileOrConsole? Файл всегда создается, но в него ничего не записывается.

Вот код:

import java.io.*;
import java.util.*;

public class Reader {

public static void main(String[] args) throws IOException {
    Scanner s = null, input = new Scanner(System.in);
    BufferedWriter out = null;

    try {
        System.out.println("Would you like to read from a file?");
        String answer = input.nextLine();

        while (answer.startsWith("y")) {
            System.out.println("What file would you like to read from?");
            String file = input.nextLine();
            s = new Scanner(new BufferedReader(new FileReader(file)));

            System.out
                    .println("Would you like to print file output to console or file?");
            FileOrConsole(input.nextLine(), s, input, out);
            System.out
                    .println("\nWould you like to read from the file again?");
            answer = input.nextLine();
        }
        if (!answer.equalsIgnoreCase("yes")) {
            System.out.println("Goodbye!");
        }

    } catch (IOException e) {
        System.out.println("ERROR! File not found!");
        // e.printStackTrace();
    } finally {
        if (s != null) {
            s.close();
        }
        if (out != null) {
            out.close();
        }
    }
}

public static void FileOrConsole(String response, Scanner s, Scanner input,
        BufferedWriter out) {
    if (response.equalsIgnoreCase("console")) {
        while (s.hasNext()) {
            System.out.println(s.nextLine());
        }
    } else if (response.equalsIgnoreCase("file")) {
        System.out.println("Name of output file?");
        response = input.nextLine();
        try {
            out = new BufferedWriter(new FileWriter(response));
        } catch (IOException e) {
            e.printStackTrace();
        }
        while (s.hasNext()) {
            try {
                out.write(s.nextLine());
                out.newLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        System.out.println("Sorry, invalid response. File or console?");
        response = input.nextLine();
        FileOrConsole(response, s, input, out);
    }
  }
}

Ответы на вопрос(2)

Ваш ответ на вопрос