Я работаю над упражнением, где должен скопировать символ файла по символу в Java. Я работаю со следующим файлом:Копирование символа файла по символу в Java
Hamlet.txt
To be, or not to be: that is the question.
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
Or to take arms against a sea of troubles,
And by opposing end them ?
создать второй файл, называемый copy.txt
, который будет содержать символ за символом копии Hamlet.txt
Проблема заключается в том, что после того, как я запускаю мой код, copy.txt
остается пустым.
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.PrintWriter;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Combinations {
public void run() {
try {
BufferedReader rd = new BufferedReader(new FileReader("Hamlet.txt"));
PrintWriter wr = new PrintWriter(new BufferedWriter(new FileWriter("copy.txt")));
copyFileCharByChar(rd, wr);
}catch(IOException ex) {
throw new RuntimeException(ex.toString());
}
}
private void copyFileCharByChar(BufferedReader rd, PrintWriter wr) {
try {
while(true) {
int ch = rd.read();
if(ch == - 1) break;
wr.print(ch);
}
} catch(IOException ex) {
throw new RuntimeException(ex.toString());
}
}
public static void main(String[] args) {
new Combinations().run();
}
}
Итак, я пишу метод copyFileCharByChar
, который принимает в BufferedReader
объекта rd
и FileWriter
объекта wr
. rd
читает каждый отдельный символ, а wr
записывает соответствующий символ. Что я здесь делаю неправильно?
Кстати, почему 'new PrintWriter (новый BufferedWriter (новый FileWriter'?' новый BufferedWriter (новый FileWriter' или 'новый FileWriter'). –
@ArnaudDenoyelle Каждый уровень повышает эффективность объекта записи. –