本节开发了一个用于复制文件的有用实用程序。在本节中,您将学习如何编写允许用户复制文件的程序。用户需要使用以下命令提供源文件和目标文件作为命令行参数: zvvq
java 复制源目标 内容来自zvvq
程序将源文件复制到目标文件并显示文件的字节数。如果源文件不存在或目标文件已存在,程序应警告用户。程序的运行示例如下图所示。 内容来自zvvq
内容来自samhan666
要将源文件的内容复制到目标文件,适合使用输入流从源文件读取字节,并使用输出流将字节发送到目标文件,而不管文件的内容如何。源文件和目标文件是从命令行指定的。为源文件创建InputFileStream,为目标文件创建OutputFileStream。使用 read() 方法从输入流中读取一个字节,然后使用 write(b) 方法将该字节写入输出流。使用 BufferedInputStream 和 BufferedOutputStream
来提高性能。下面的代码给出了问题的解决方案。 内容来自zvvq
1
2 内容来自samhan
3
4
zvvq.cn
5 本文来自zvvq
6
内容来自zvvq
7 zvvq.cn
8
9 copyright zvvq
10 zvvq好,好zvvq
11 zvvq.cn
12 内容来自zvvq,别采集哟
13
14
15 内容来自samhan666
16
本文来自zvvq
17
18 内容来自samhan666
19 内容来自samhan
20 本文来自zvvq
21 zvvq
22 本文来自zvvq
23 内容来自samhan666
24
内容来自zvvq,别采集哟
25
26
zvvq好,好zvvq
27
内容来自zvvq,别采集哟
28
内容来自samhan
29
30
内容来自samhan666
31
32 zvvq
33
34 本文来自zvvq
35
内容来自zvvq,别采集哟
36
37
内容来自zvvq,别采集哟
38 内容来自samhan666
39 内容来自zvvq,别采集哟
40 zvvq
41
内容来自samhan666
42 内容来自zvvq
43
44
打包演示; 内容来自samhan
导入java.io.*; zvvq好,好zvvq
公共课复制{
公共静态无效主(字符串[] args)抛出IOException { 内容来自zvvq
// 检查命令行参数使用情况 内容来自zvvq
if(args.length != 2) { zvvq
System.out.println("用法:java复制源文件目标文件"); 内容来自samhan666
系统.退出(1);
} 本文来自zvvq
// 检查源文件是否存在 内容来自samhan666
文件sourceFile = new File(args[0]);
if(!sourceFile.exists()) { copyright zvvq
System.out.println("源文件 " + args[0] + " 不存在"); copyright zvvq
系统.退出(2); 内容来自samhan666
} zvvq
// 检查源文件是否存在
内容来自samhan
文件目标文件 = 新文件(args[1]); 内容来自samhan
if(!targetFile.exists()) {
zvvq.cn
System.out.println("目标文件" + args[1] + "已经存在");
内容来自zvvq
系统.退出(3);
} zvvq.cn
尝试(
// 创建输入流 内容来自zvvq,别采集哟
BufferedInputStream 输入 = new BufferedInputStream(new FileInputStream(sourceFile));
内容来自samhan666
// 创建输出流 zvvq好,好zvvq
BufferedOutputStream 输出 = new BufferedOutputStream(new FileOutputStream(targetFile));
本文来自zvvq
){ 内容来自samhan
// 连续从输入读取一个字节并将其写入输出
int r, 复制字节数 = 0; copyright zvvq
while((r = input.read()) != -1) { copyright zvvq
输出.write((字节)r);
zvvq
已复制字节数++; zvvq
}
// 显示文件大小 copyright zvvq
System.out.println(numberOfBytesCopied + " 复制的字节数");
内容来自samhan666
} zvvq好,好zvvq
}
} 内容来自samhan666
程序首先检查用户是否在第 7-10 行从命令行传递了两个必需的参数。 zvvq.cn
程序使用File类来检查源文件和目标文件是否存在。如果源文件不存在(第14-17行)或者目标文件已经存在(第20-24行),则程序结束。
第 28 行中使用包装在 FileInputStream 上的 BufferedInputStream 创建输入流,并使用第 31 行中包装在 FileOutputStream 上的 BufferedOutputStream 创建输出流。 zvvq.cn
表达式((r = input.read()) != -1) zvvq.cn
(第35行)从 copyright zvvq
读取一个字节 input.read(),将其赋值给r,并检查它是否为-1。输入值-1表示文件结束。程序不断从输入流读取字节并将它们发送到输出流,直到读取完所有字节。以上就是案例研究:复制文件的详细内容,更多请关注其它相关文章!
zvvq好,好zvvq