Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java将一个文件复制到另一个文件中_Java - Fatal编程技术网

Java将一个文件复制到另一个文件中

Java将一个文件复制到另一个文件中,java,Java,我的代码做了我想要的,它复制了一个指定的文件,但是,我只有在它只复制指定代码中的文件的情况下进行设置。我希望它从用户那里获取输入,用户给出两个文件名,然后它将一个文件复制到另一个文件中。我希望能够复制最终用户提供的任何文件。我现在知道它只复制了这两个文件;report.txt和report.sav fr = new FileReader("report.txt"); fw = new FileWriter("report.sav"); 最终用户可能希望复制给定文件之外的文件,我如何才能做到这

我的代码做了我想要的,它复制了一个指定的文件,但是,我只有在它只复制指定代码中的文件的情况下进行设置。我希望它从用户那里获取输入,用户给出两个文件名,然后它将一个文件复制到另一个文件中。我希望能够复制最终用户提供的任何文件。我现在知道它只复制了这两个文件;
report.txt
report.sav

fr = new FileReader("report.txt");
fw = new FileWriter("report.sav"); 
最终用户可能希望复制给定文件之外的文件,我如何才能做到这一点

这是我的密码:

import java.io.*;

public class CopyFile {
    public static void main(String args[]) {

        FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader("report.txt");
            fw = new FileWriter("report.sav");
            int c = fr.read();
            while(c!=-1) {
                fw.write(c);
                c = fr.read();
            }
        } catch(IOException e) {
            e.printStackTrace();
        } finally {
            close(fr);
            close(fw);
        }
    }
    public static void close(Closeable stream) {
        try {
            if (stream != null) {
                stream.close();
            }
        } catch(IOException e) {

        }
    }
} 

实现这一点的简单方法是在JDK1.7版本中使用
java.nio.file.Files
API。从main方法的参数中获取源文件名和目标文件名

文件副本的示例代码:

import java.io.*;
import java.nio.file.*;

public class FileCopy{
    public static void main(String args[]){
        if ( args.length < 2){
            System.out.println("Usage: java FileCopy <source> <destination>");
            return;
        }
        try{
             Files.copy(Paths.get(args[0]), Paths.get(args[1]),StandardCopyOption.REPLACE_EXISTING);
         }catch(Exception err){
            err.printStackTrace();
         }

    }

}
import java.io.*;
导入java.nio.file.*;
公共类文件副本{
公共静态void main(字符串参数[]){
如果(参数长度<2){
println(“用法:javafilecopy”);
返回;
}
试一试{
文件.copy(path.get(args[0])、path.get(args[1])、StandardCopyOption.REPLACE_EXISTING);
}捕获(异常错误){
err.printStackTrace();
}
}
}
用法(示例):
java FileCopy FileCopy.java FileCopy1.java


查看oracle以获取文件API的详细列表。

除了使用命令行参数外,还可以使用您可能希望查看以下快捷方式的文件。
Files.copy(Paths.get(args[0])、Paths.get(args[1])、StandardCopyOption.ATOMIC\u MOVE)我实际上是在使用命令行和记事本来编写代码。
文件上的任何链接。复制(path.get(args[0])、path.get(args[1])
?@Noah检查Java教程:还有,伙计!你是个救命恩人!我创建了一些随机文件,它复制了每个文件!简单而优雅的代码!我喜欢它!再次感谢!:)我想进一步改进这个答案。如果目的地已经存在,它应该覆盖而不是抛出异常。是的,它应该打印
用法:java CopyFile fromFile to file
错误消息,因为输入参数的数量不正确。现在修改复制API以覆盖目标,但我明白你的意思。如果文件已经存在并抛出
FileReadyExistsException