任务要求:
通过二进制流的操作方式把程序调整为可以实现对任何类型文件进行文件复制(而不是调用windows命令行的内部命令copy)。
通过二进制流的操作方式把程序调整为可以实现对任何类型文件进行文件移动(而不是调用windows命令行的外部命令move)。
一.文件复制
1.介绍InputStream和OutputStream
InputStream和OutputStream是抽象类,是所有字节输入流和输出流的父类。
InputStream(输入流):输入流是用来读入数据的。(读入)
OutputStream(输出流):输出流是用来写出数据的。(写出)
(1)文件输入流——FileInputStream
FileInputStream 从文件系统中的某个文件中获得输入字节。
构造方法
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。 public FileInputStream(File file);
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。 public FileInputStream(String name);
(2)文件输出流——FileOutputStream
文件输出流是用于将数据写入到文件中。
构造方法
创建一个向指定 File 对象表示的文件中写入数据的文件输出流 public FileOutputStream(File file);
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。 public FileOutputStream(File file,boolean append);
创建一个向具有指定名称的文件中写入数据的输出文件流 public FileOutputStream(String name);
创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。 public FileOutputStream(String name,boolean append);
2.进行文件复制
代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
class CopyFile
{
static void copy(String srcPathStr, String desPathStr)
{
//获取源文件的名称
String newFileName = srcPathStr.substring(srcPathStr.lastIndexOf("\\")+1); //目标文件地址
System.out.println("源文件:"+newFileName);
desPathStr = desPathStr + File.separator + newFileName; //源文件地址
System.out.println("目标文件地址:"+desPathStr);
try
{
FileInputStream fis = new FileInputStream(srcPathStr);//创建输入流对象
FileOutputStream fos = new FileOutputStream(desPathStr); //创建输出流对象
byte datas[] = new byte[1024*8];//创建搬运工具
int len = 0;//创建长度
while((len = fis.read(datas))!=-1)//循环读取数据
{
fos.write(datas,0,len);
}
fis.close();//释放资源
fis.close();//释放资源
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
String srcPathStr = "E:\\java task\\zhl.txt"; //源文件地址
String desPathStr = "E:\\java task\\zhlll"; //目标文件地址
copy(srcPathStr, desPathStr);//将E:\\java task\\zhl.txt文件拷贝到E:\\java task\\zhlll
}
}
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
结果如下:
二.文件移动
1.renameTo 的使用
(1)重命名文件
File oldName = new File("E:\\java task\\zh.txt");
File newName = new File("E:\\java task\\zhl.txt");
System.out.println(oldName.renameTo(newName));//zh.txt改为zhl.txt
1
2
3
(2)进行文件的移动操作
File oldName = new File("E:\\java task\\zhl.txt");
File newName = new File("E:\\java task\\zhlll\\zhl.txt");
System.out.println(oldName.renameTo(newName));//E:\\java task\\zhl.txt移动至E:\\java task\\zhlll
1
2
3
2.实现文件移动
代码如下:
import java.io.File;
class MoveFile
{
public static void main(String[] agrs)
{
try
{
File file=new File("E:\\java task\\zhl.txt"); //源文件
if (file.renameTo(new File("E:\\java task\\zhlll\\"+file.getName()))) //源文件移动至目标文件目录
{
System.out.println("File is moved successful!");//输出移动成功
}
else
{
System.out.println("File is failed to move !");//输出移动失败
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
结果如下:
————————————————
版权声明:本文为CSDN博主「张海玲」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42014622/article/details/82959678