Мне надо создать метод, который будет записывать все содержимое введенное пользователем с консоли в файл по заданному пути, не перезаписывая содержимое файла. И запись в файл должна производиться после ввода команды wr в отдельной строке. Метод я сделал, но в результате его работы, срабатывает сразу первый cath. Когда дебажу программу показывает - процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
public static void writeToFileFromConsole(String path){
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(reader);
FileWriter writer = null;
BufferedWriter bufferedWriter = null;
System.out.println("Enter file content to write in the file:");
try {
String command = "wr";
String line;
line = br.readLine();
if ((line = br.readLine()).equals(command)) {
writer = new FileWriter(path, true);
bufferedWriter = new BufferedWriter(writer);
bufferedWriter.append("
");
bufferedWriter.append(line);
}
}catch (IOException e){
System.err.println("Can't write to file with path " + path);
}
finally {
try {
reader.close();
br.close();
if (writer != null){
writer.close();
}
if (bufferedWriter != null){
bufferedWriter.close();
}
}catch (IOException e){
System.err.println("File with path " + path + " not found" );
}
}
}
Подскажите в чём моя ошибка ? И как исправить, чтобы в файл записывались данные введенные в консоли.
Ответ
Проверил ваш код, ошибок никаких не возникло, кроме исключения сообщавшего, что файла не существует.
Переделал, чтобы его не возникало:
private static void writeToFileFromConsole(String path) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter file content to write in the file:");
try (OutputStream output = Files
.newOutputStream(
Paths.get(path),
StandardOpenOption.APPEND,
StandardOpenOption.CREATE);
BufferedOutputStream outputStream = new BufferedOutputStream(output)) {
String line;
while (!"rw".equalsIgnoreCase(line = reader.readLine())) {
outputStream.write(System.lineSeparator().getBytes());
outputStream.write(line.getBytes());
}
} catch (IOException e) {
e.printStackTrace();
}
}
Комментариев нет:
Отправить комментарий