使用Scanner类java复制文件

使用Scanner类java复制文件,java,Java,我正在尝试使用Scanner类将textfile.txt的内容复制到target.txt 当我运行程序时,它确实会创建target.txt文件,但不会写入该文件 我可以使用FileInputStream并复制文件,但我想使用Scanner类 有人能看出我做错了什么吗 谢谢 import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOExce

我正在尝试使用Scanner类将textfile.txt的内容复制到target.txt

当我运行程序时,它确实会创建target.txt文件,但不会写入该文件

我可以使用FileInputStream并复制文件,但我想使用Scanner类

有人能看出我做错了什么吗

谢谢

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();

    }

}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.OutputStream;
导入java.util.Scanner;
公共类可读文件{
public ReadaFile()引发IOException{
试一试{
文件f1=新文件(“textfile.txt”);
文件f2=新文件(“target.txt”);
扫描仪输入=新扫描仪(f1);
OutputStream out=新文件OutputStream(f2);
字节buf[]=新字节[1024];
int i=0;
while(在.hasNextByte()中){
if(in.hasNextByte()&&i
您根本不需要使用缓冲区数组。您可以像这样直接将其写入字节(因为您坚持使用扫描仪,所以使用此解决方案)


扫描仪被指定用于解析文本数据。所以hasNextByte和nextByte方法应该从文件中获取数字并将其转换为字节。
如果您想从文件中获取文本,可以使用FileReader。

您使用的是Java 7吗?然后只使用
File.copy
:或者如果没有,只使用
FileInputStream
FileOutputStream
。使用
扫描仪
在这里是一个奇怪的选择。谢谢R.J,我已经尝试了你的建议,但仍然这样做。它创建了target.txt文件,但没有写入其中。@user2995057-我在系统中尝试了这段代码,它成功了。直到那个之后,我才把它作为一个答案发布出来。谢谢R.J,对不起,伙计,我仍然有While循环的条件(在.hasNextByte()中),我按照您的建议将它改为(在.hasNext()中),它工作了。
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();
}