上一篇文章已经分享了关于流的基础内容,下面就来实战一下
文件的复制
package cn.bzu.look.dao;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFileTest {
public static void main(String[] args) {
CopyFileTest cft = new CopyFileTest();
//路径名最好不要有中文路径,有的话在写的时候会报找不到路径的错误(这里小编已经试了很多次了)
File file = new File("G:\\FileTest");
cft.copyFiles(file, "D:");
}
//复制文件的方法
public void copyFiles(File file, String path) {
String oldPath = file.getAbsolutePath();
//获得新文件的路径
String newPath = path+oldPath.split(":")[1];
File newFile = new File(newPath);
FileInputStream fis = null;
FileOutputStream fos = null;
//如果file是个文件,得到的结果是null,如果file是个空目录,则返回的是一个空数组,如果不是空目录,则返回是目录下面的文件和目录
File[] files = file.listFiles();
try {
if (files != null) {
// 说明他是目录,则创建目录
newFile.mkdir();
System.out.println( file.getName()+"目录复制成功");
if (files.length > 0) {
for (File f : files) {
copyFiles(f, path);
}
}
} else {//说明file是个文件,则直接写入
fis = new FileInputStream(file);
fos = new FileOutputStream(newFile);
// 说明他是文件,直接读取然后写入
byte[] bytes = new byte[1024];
int count = fis.read(bytes);
while (count != -1) {
//将读取到的内容写到文件中
fos.write(bytes, 0, count);
fos.flush();
count = fis.read(bytes);
}
System.out.println(file.getName()+"文件复制成功");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fis!=null) {
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fos!=null) {
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
输出结果
FileTest目录复制成功
jiangheng.txt文件复制成功
out目录复制成功
inner目录复制成功
innerA目录复制成功
innerInner.txt文件复制成功
innerA.txt文件复制成功
inner.txt文件复制成功
outDirec目录复制成功
hengheng.txt文件复制成功
InnerB目录复制成功
复制是从文件最顶层开始复制。
文件的删除
public void deleteFiles(File file) {
File[] files = file.listFiles();
if(files!=null&&files.length>0) {
for(File f: files) {
deleteFiles(f);
}
}
file.delete();
System.out.println("删除成功"+file.getName());
}
在main方法中直接调用就行
public static void main(String[] args) {
CopyFileTest cft = new CopyFileTest();
File file1 = new File("D:\\FileTest");
cft.deleteFiles(file1);
}
文件的剪切
在main方法中先调用复制的方法,在调用删除的方法,这样就实现了剪切
public static void main(String[] args) {
CopyFileTest cft = new CopyFileTest();
File file = new File("G:\\FileTest");
File file1 = new File("G:\\FileTest");
cft.copyFiles(file, "D:");
cft.deleteFiles(file1);
}
输出结果是:
FileTest目录复制成功
jiangheng.txt文件复制成功
out目录复制成功
inner目录复制成功
innerA目录复制成功
innerInner.txt文件复制成功
innerA.txt文件复制成功
inner.txt文件复制成功
outDirec目录复制成功
hengheng.txt文件复制成功
InnerB目录复制成功
删除成功jiangheng.txt
删除成功innerInner.txt
删除成功innerA
删除成功innerA.txt
删除成功inner
删除成功inner.txt
删除成功out
删除成功hengheng.txt
删除成功InnerB
删除成功outDirec
删除成功FileTest
文件流的基础知识
https://blog.csdn.net/weixin_43610698/article/details/91942534