我正在尝试使用扫描仪类将textfile.txt的内容复制到target.txt。
当我运行程序时,它会创建target.txt文件,但它不会写入它。
我可以使用FileInputStream并复制文件,但我想使用扫描仪类。
谁能看到我做错了什么?
感谢。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Scanner;
public class ReadaFile {
public ReadaFile() throws IOException {
try {
File f1 = new File("textfile.txt");
File f2 = new File("target.txt");
Scanner in = new Scanner(f1);
OutputStream out = new FileOutputStream(f2);
byte buf[] = new byte[1024];
int i = 0;
while (in.hasNextByte()) {
if (in.hasNextByte() && i < buf.length) {
buf[i] = in.nextByte();
i++;
}else{
out.write(buf, 0, i);
out.flush();
}
}
in.close();
out.close();
} catch (FileNotFoundException e) {
e.getMessage();
}
}
public static void main(String[] args) throws IOException {
new ReadaFile();
}
}
答案 0 :(得分:1)
根本不需要使用缓冲区数组。您可以像这样直接写入字节(因为您坚持使用扫描仪,因此这个解决方案)
while (in.hasNext()) {
out.write(in.nextLine().getBytes());
out.write("\n".getBytes()); // This will write an extra new line character at the end of all the data.
out.flush();
}
答案 1 :(得分:0)
指定扫描程序来解析文本数据。所以它的hasNextByte和nextByte方法应该从文件中获取数字并将它们转换为字节。 如果要从文件中获取文本,可以使用FileReader。