思路:

判断 即将 复制的文件是文件夹还是文件

遍历需要复制的源文件夹

如果是文件夹,就通过流创建一个同样的子文件夹

如果是文件,就复制过去

接下来上代码

public class Demo1 {

    public static void main(String[] args) {
//裁剪的文件
String f1 = "C:\\Users\\KAlways18\\Desktop\\1216作业\\1216作业";
//保存的位置
String f2 = "C:\\Users\\KAlways18\\Desktop\\1216作业\\第一题完成后没有这个文件夹\\1216作业\\1216作业1";
One(f1, f2);
} //先进行文件的父目录的创建在进行子目录的创建
public static void One(String f1, String f2) {
File crop = new File(f1);
File save = new File(f2, crop.getName());
if (!save.exists()) {//判断目录是否存在
save.mkdir();//创建单个文件
}
traverse(crop.getAbsolutePath(), save.getAbsolutePath());//调用方法
//删除父目录
//这时候删除父目录时没有子目录了可以正常删除
if (crop.delete()) {
System.out.println("父目录删除成功");
}
} //穿过
public static void traverse(String f1, String f2) {
try {
File crop = new File(f1);//拷贝
if (!crop.isDirectory()) {//如果不是文件就不复制
return;
}
File save = new File(f2);//保存
if (!save.exists()) {//判断路径是否存在不存在就创建
save.mkdir();//创建单个文件
}
File[] files = crop.listFiles();
for (File f : files) {
//separator与系统相关的默认分隔符
String strCrop = f1 + File.separator + f.getName();//拼接
System.out.println("需要复制文件夹:" + strCrop);
String strSave = f2 + File.separator + f.getName();
System.out.println("粘贴文件夹:" + strSave);
if (f.isDirectory()) {
System.out.println("\n正在创建文件夹" + f.getName() + "\n");
traverse(strCrop, strSave);
}
//如果是文件就进行写入
if (f.isFile()) {
System.out.println("\n正在创建文件" + f.getName() + "\n");
makeFile(strCrop, strSave);
}
//删除文件,只能删除子目录文件还要进行删除父目录文件在第一次调用方法时进行删除
if (f.delete()) {
System.out.println("子文件或者子文件夹删除成功");
}
}
} catch (Exception e) {
System.out.println("文件可能找不到");
e.printStackTrace();
}
} //文件复制
public static void makeFile(String f1, String f2) {
//写在try中进行捕获不需要关流
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f1));//输入读取
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f2));//输出写入
) {
int tem = 0;
byte[] b = new byte[1024];
while ((tem = bis.read(b)) != -1) {
bos.write(b);
} } catch (IOException e) {
e.printStackTrace();
}
} }

IO流实现简单的文件的剪切的更多相关文章

  1. IO流的简单实现

    IO流的几种实现方式 学习目标: 例题: 字节输出流 字节输入流 字符输入流 字符输出流 学习目标: 熟练掌握IO流的基本实现方式 例题: 字节输出流 代码如下: public class Outpu ...

  2. IO流的应用_Copy文件

    IO流的应用_Copy文件 (1) import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

  3. io流(io流的引入与文件字节流)

    io流的引入与文件字节流 io流:就是一根吸管,插入后,可以操作目标文件 io流的分类: 按方向:输入,输出 按大小:字节,字符 按处理方式: 处理流:"管套着管" --- 流结合 ...

  4. Java开发笔记(九十一)IO流处理简单的数据压缩

    前面介绍的文件I/O,不管是写入文本还是写入对象,文件中的数据基本是原来的模样,用记事本之类的文本编辑软件都能浏览个大概.这么存储数据,要说方便确实方便,只是不够经济划算,原因有二:其一,写入的数据可 ...

  5. AJPFX关于IO流的简单总结

    IO流的分类:1.根据流的数据对象来分:高端流:所有的内存中的流都是高端流,比如:InputStreamReader  低端流:所有的外界设备中的流都是低端流,比如InputStream,Output ...

  6. IO流——File类(文件流类)

    java语言的输入输出操作是借助于输入输出包java.io来实现的,按传输方向分为输入流与输出流,从外设传递到应用程序的流为输入流,将数据从应用程序输入到外设的流为输出流. File类的构造方法: 1 ...

  7. 07 IO流(四)——文件字节流 FileInputStream/FileOutputStream与文件的拷贝

    两个类的简述 专门用来对文件进行读写的类. 父类是InputStream.OutputStream 文件读入细节 FileOutputStream流的构造方法:new FileOutputStream ...

  8. IO流实现GBK写入文件然后转换UTF-8

    public static void main(String[] args) throws IOException { File file = new File("olol\\a.txt&q ...

  9. IO流,字节流复制文件,字符流+缓冲复制文件

    JAVAIO如果按流向分:输入流和输出流两种 输入流的基类:InputStream   Reader 输出流的基类:OutputStream   Writer 如果按数据单元划分:字节流和字符流 字节 ...

随机推荐

  1. 那些 22 岁毕业做Android开发的人,他们 50 岁左右时的人生轨迹是怎样的?

    本人今年35了,已经干了14年程序员,是14年不是13年,因为我是专科毕业. 一直就是普普通通的程序员,特别纯的码农,从没做过管理岗位,并且很可能以后也是如此. 现在已经上有老下有小. 曾经在某著名互 ...

  2. .net core 响应的json数据驼峰显示问题。

    在.net core webapi中,默认响应的json数据是以驼峰显示的,即首字母小写的方式.如果让其正常显示,只需要在全局配置即可.代码如下图: 配置之后,响应数据就不会再以驼峰的形式展示了.而是 ...

  3. JavaWeb项目实战-油画商城

    整个项目都已经上传到github-mmgallery上,供有需要的读者使用,主要文件来自于csdn,区别是csdn中的项目数据存储在MySQL中,本项目数据存储在Xml文件中.课件和学习视频课程来自M ...

  4. Java 多线程与并发【原理第二部分笔记】

    Java 多线程与并发[原理第二部分笔记] 什么是Java内存模型中的happens-before Java内存模型,即JMM,本身是一种抽象的概念,并不是真实存在的,他描述的是一组规则或者说是一种规 ...

  5. Shellshock 破壳漏洞 Writeup

    破壳漏洞 CVE编号:CVE-2014-6271 题目URL:http://www.whalwl.site:8029/ 提示:flag在服务器根目录 ShellShock (CVE-2014-6271 ...

  6. 题解 w

    传送门 一直觉得有点后效性什么的,也不知道怎么写 这题什么时候再康一遍,第一次见这个样子的树形DP,是个树上带不定权边的DP(??? 这里能树形DP的原因好像是在这里所有子节点的状态都能表示出来 还有 ...

  7. 4、二进制安装K8s 之 部署kube-controller-manager

    二进制安装K8s 之 部署kube-controller-manager 1.创建配置文件 cat > /data/k8s/config/kube-controller-manager.conf ...

  8. C++ 中的User a, User b=a 和User a, User b, b=a的区别

    #include <iostream>using namespace std;class User{ public: int age; int number; User() { cout ...

  9. wpf toggleSwitch 的只读属性

    xml code --------------------------------------------- <Page x:Class="UWPDemo.MainPage" ...

  10. mzy git学习, 保留现场,恢复现场,以及bug分支处理(七)

    git stash 在git中有时候我们工作做了一半,但是有点急事需要离开一段时间,或者现在需要切换到另一个分支下,去维护和修改一些其它的东西,但是我们现在的工作还没有完成,提交上去的话,并不是完整的 ...