ZVVQ代理分享网

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

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

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

java 复制源目标

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

打包演示;

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

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