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