本节开发了一个用于复制文件的有用实用程序。在本节中,您将学习如何编写允许用户复制文件的程序。用户需要使用以下命令提供源文件和目标文件作为命令行参数:

java 复制源目标

程序将源文件复制到目标文件并显示文件的字节数。如果源文件不存在或目标文件已存在,程序应警告用户。程序的运行示例如下图所示。

要将源文件的内容复制到目标文件,适合使用输入流从源文件读取字节,并使用输出流将字节发送到目标文件,而不管文件的内容如何。源文件和目标文件是从命令行指定的。为源文件创建InputFileStream,为目标文件创建OutputFileStream。使用 read() 方法从输入流中读取一个字节,然后使用 write(b) 方法将该字节写入输出流。使用 BufferedInputStream 和 BufferedOutputStream 来提高性能。下面的代码给出了问题的解决方案。

打包演示;
导入java.io.*;

公共课复制{
公共静态无效主(字符串[] args)抛出IOException {
// 检查命令行参数使用情况
if(args.length != 2) {
System.out.println("用法:java复制源文件目标文件");
系统.退出(1);
}

    // 检查源文件是否存在
    文件sourceFile = new File(args[0]);
    if(!sourceFile.exists()) {
        System.out.println("源文件 " + args[0] + " 不存在");
        系统.退出(2);
    }

    // 检查源文件是否存在
    文件目标文件 = 新文件(args[1]);
    if(!targetFile.exists()) {
        System.out.println("目标文件" + args[1] + "已经存在");
        系统.退出(3);
    }

    尝试(
        // 创建输入流
            BufferedInputStream 输入 = new BufferedInputStream(new FileInputStream(sourceFile));

            // 创建输出流
            BufferedOutputStream 输出 = new BufferedOutputStream(new FileOutputStream(targetFile));
        ){
        // 连续从输入读取一个字节并将其写入输出
        int r, 复制字节数 = 0;
        while((r = input.read()) != -1) {
            输出.write((字节)r);
            已复制字节数++;
        }

        // 显示文件大小
        System.out.println(numberOfBytesCopied + " 复制的字节数");
    }
}

}

登录后复制

程序首先检查用户是否在第 7-10 行从命令行传递了两个必需的参数。

程序使用File类来检查源文件和目标文件是否存在。如果源文件不存在(第14-17行)或者目标文件已经存在(第20-24行),则程序结束。

第 28 行中使用包装在 FileInputStream 上的 BufferedInputStream 创建输入流,并使用第 31 行中包装在 FileOutputStream 上的 BufferedOutputStream 创建输出流。

表达式((r = input.read()) != -1)(第35行)从读取一个字节
input.read(),将其赋值给r,并检查它是否为-1。输入值-1表示文件结束。程序不断从输入流读取字节并将它们发送到输出流,直到读取完所有字节。

    以上就是案例研究:复制文件的详细内容,更多请关注php中文网其它相关文章!