在 Java 中逐字符复制文件

Copying a file character by character in 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 对象 wrrd 读取每个单独的字符,而 wr 写入相应的字符。我在这里做错了什么?

在这种情况下你需要强制打印:

wr.print((char)ch);

或者使用写法:

wr.write(ch);

您还需要关闭您的 PrintWriter:

wr.close();