IO流实现简单的文件的剪切
思路:
判断 即将 复制的文件是文件夹还是文件
遍历需要复制的源文件夹
如果是文件夹,就通过流创建一个同样的子文件夹
如果是文件,就复制过去
接下来上代码
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流实现简单的文件的剪切的更多相关文章
- IO流的简单实现
IO流的几种实现方式 学习目标: 例题: 字节输出流 字节输入流 字符输入流 字符输出流 学习目标: 熟练掌握IO流的基本实现方式 例题: 字节输出流 代码如下: public class Outpu ...
- IO流的应用_Copy文件
IO流的应用_Copy文件 (1) import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundEx ...
- io流(io流的引入与文件字节流)
io流的引入与文件字节流 io流:就是一根吸管,插入后,可以操作目标文件 io流的分类: 按方向:输入,输出 按大小:字节,字符 按处理方式: 处理流:"管套着管" --- 流结合 ...
- Java开发笔记(九十一)IO流处理简单的数据压缩
前面介绍的文件I/O,不管是写入文本还是写入对象,文件中的数据基本是原来的模样,用记事本之类的文本编辑软件都能浏览个大概.这么存储数据,要说方便确实方便,只是不够经济划算,原因有二:其一,写入的数据可 ...
- AJPFX关于IO流的简单总结
IO流的分类:1.根据流的数据对象来分:高端流:所有的内存中的流都是高端流,比如:InputStreamReader 低端流:所有的外界设备中的流都是低端流,比如InputStream,Output ...
- IO流——File类(文件流类)
java语言的输入输出操作是借助于输入输出包java.io来实现的,按传输方向分为输入流与输出流,从外设传递到应用程序的流为输入流,将数据从应用程序输入到外设的流为输出流. File类的构造方法: 1 ...
- 07 IO流(四)——文件字节流 FileInputStream/FileOutputStream与文件的拷贝
两个类的简述 专门用来对文件进行读写的类. 父类是InputStream.OutputStream 文件读入细节 FileOutputStream流的构造方法:new FileOutputStream ...
- IO流实现GBK写入文件然后转换UTF-8
public static void main(String[] args) throws IOException { File file = new File("olol\\a.txt&q ...
- IO流,字节流复制文件,字符流+缓冲复制文件
JAVAIO如果按流向分:输入流和输出流两种 输入流的基类:InputStream Reader 输出流的基类:OutputStream Writer 如果按数据单元划分:字节流和字符流 字节 ...
随机推荐
- C++ //关系运算符重载 < = > !=
1 //关系运算符重载 < = > != 2 #include <iostream> 3 #include <string> 4 using namespace s ...
- 乘风破浪,遇见Android Jetpack之Compose声明式UI开发工具包,逐渐大一统的原生UI绘制体系
什么是Android Jetpack https://developer.android.com/jetpack Android Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法.减少 ...
- 微信小程序测试点
一.测试范围 1.权限测试 需要检查以下几种情况下微信用户访问的权限 1)未授权微信登录小程序 未授权时,一般使用一些业务功能的时候,都会弹出提醒:先授权再操作对应功能.or在提交数据到后台的时候,会 ...
- js继承方式及特征
1. 原型链继承 (原型链) function Parent() { this.fruits = ['apple', 'orange']; } Parent.prototype.sayHello = ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.B)- FlexSPI NOR连接方式大全(RT1160/1170)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT1160/1170两款MCU的FlexSPI NOR启动的连接方式. 这个 i.MXRT FlexSPI NOR 启动 ...
- STM32启动文件详解及SystemInit函数分析(转)
;先在RAM中分配系统使用的栈,RAM的起始地址为0x2000_0000 ;然后在RAM中分配变量使用的堆 ;然后在CODE区(flash)分配中断向量表,flash的起始地址为0x0800_0000 ...
- Debian 11 “bullseye” 安装笔记
作者:gc(at)sysin.org,主页:www.sysin.org Debian 版本:11 代号:bullseye 发布日期:2021.08.14 内核版本:5.10 $ uname -a Li ...
- STM32—4线SPI驱动SSD1306 OLED
文章目录 一.OLED简介 二.驱动SSD1306所需知识 1.引脚介绍 2.通信时序 3.显存GRAM 4.字库 5.SSD1306基本命令 三.代码讲解 1.相关引脚配置 2.模拟SPI通信 3. ...
- mysql使用 分区表使用,常用sql
mysql使用 分区表使用,常用sql 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/84839478未经博主允许不得转载 ...
- NOIP 模拟 $32\; \rm Smooth$
题解 \(by\;zj\varphi\) 很简单的贪心题. 开 \(B\) 个队列,每个队列存最后一次乘上的数为当前队列编号的数. 每次去所有队列中队首的最小值,不用开堆,因为开堆用于将所有数排序,但 ...