在 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
对象 wr
。 rd
读取每个单独的字符,而 wr
写入相应的字符。我在这里做错了什么?
在这种情况下你需要强制打印:
wr.print((char)ch);
或者使用写法:
wr.write(ch);
您还需要关闭您的 PrintWriter:
wr.close();
我正在做一个练习,我必须在 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
写入相应的字符。我在这里做错了什么?
在这种情况下你需要强制打印:
wr.print((char)ch);
或者使用写法:
wr.write(ch);
您还需要关闭您的 PrintWriter:
wr.close();