zvvq技术分享网

案例研究:复制文件(列举复制文件或文件夹的

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

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

java 复制源目标

内容来自samhan666

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

内容来自samhan

copyright zvvq

要将源文件的内容复制到目标文件,适合使用输入流从源文件读取字节,并使用输出流将字节发送到目标文件,而不管文件的内容如何。源文件和目标文件是从命令行指定的。为源文件创建InputFileStream,为目标文件创建OutputFileStream。使用 read() 方法从输入流中读取一个字节,然后使用 write(b) 方法将该字节写入输出流。使用 BufferedInputStreamBufferedOutputStream

copyright zvvq

来提高性能。下面的代码给出了问题的解决方案。

本文来自zvvq

1 内容来自zvvq,别采集哟

2 本文来自zvvq

3

copyright zvvq

4 zvvq好,好zvvq

5 本文来自zvvq

6

copyright zvvq

7

内容来自samhan666

8 内容来自zvvq,别采集哟

9

copyright zvvq

10

zvvq好,好zvvq

11

zvvq

12 zvvq好,好zvvq

13

copyright zvvq

14

内容来自samhan

15

copyright zvvq

16 zvvq.cn

17

内容来自samhan

18

内容来自samhan666

19

本文来自zvvq

20

内容来自samhan

21 zvvq

22

内容来自zvvq

23 内容来自samhan

24

copyright zvvq

25

zvvq

26

copyright zvvq

27 内容来自samhan666

28

zvvq.cn

29 本文来自zvvq

30 zvvq

31 本文来自zvvq

32

内容来自zvvq

33 内容来自zvvq,别采集哟

34 内容来自samhan666

35 copyright zvvq

36 copyright zvvq

37 内容来自samhan666

38

内容来自zvvq

39 zvvq.cn

40

内容来自samhan

41 内容来自zvvq

42 内容来自zvvq,别采集哟

43

内容来自zvvq

44

zvvq好,好zvvq

打包演示; 内容来自zvvq,别采集哟

导入java.io.;

zvvq

公共课复制{

内容来自zvvq

公共静态无效主(字符串[] args)抛出IOException {

zvvq

// 检查命令行参数使用情况

copyright zvvq

if(args.length != 2) { 内容来自samhan

System.out.println("用法:java复制源文件目标文件");

copyright zvvq

系统.退出(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,别采集哟

}

内容来自samhan666

// 检查源文件是否存在 内容来自zvvq

文件目标文件 = 新文件(args[1]); copyright zvvq

if(!targetFile.exists()) {

内容来自zvvq

System.out.println("目标文件" + args[1] + "已经存在");

zvvq

系统.退出(3);

copyright zvvq

} 内容来自zvvq,别采集哟

尝试( zvvq好,好zvvq

// 创建输入流

zvvq好,好zvvq

BufferedInputStream 输入 = new BufferedInputStream(new FileInputStream(sourceFile)); 内容来自zvvq,别采集哟

// 创建输出流

内容来自samhan666

BufferedOutputStream 输出 = new BufferedOutputStream(new FileOutputStream(targetFile));

内容来自zvvq

){

内容来自zvvq

// 连续从输入读取一个字节并将其写入输出

zvvq好,好zvvq

int r, 复制字节数 = 0;

内容来自samhan

while((r = input.read()) != -1) { 内容来自zvvq,别采集哟

输出.write((字节)r); 内容来自zvvq,别采集哟

已复制字节数++;

内容来自zvvq

}

内容来自zvvq

// 显示文件大小 copyright zvvq

System.out.println(numberOfBytesCopied + " 复制的字节数"); zvvq

} 内容来自zvvq

} 内容来自zvvq,别采集哟

}

内容来自zvvq

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

内容来自samhan666

程序使用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表示文件结束。程序不断从输入流读取字节并将它们发送到输出流,直到读取完所有字节。

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

本文来自zvvq