IO流-文件夹的拷贝
文件夹的拷贝操作
要求:
完成文件夹的拷贝,包括子目录的拷贝和所有文件的拷贝
分析:
- 首先,得在目标目录下创建一个与源文件夹名称相同的文件夹
- 遍历源文件夹中的所有文件对象,判断子文件是目录还是文件
- 如果是目录,递归调用第一步的操作
- 如果是文件,用缓冲流文件字节流完成对文件的复制
- 创建源和目标File f = new File("路径");
- 创建输入流和输出流对象,肯定得传上面的源和目标
- 输入输出操作,输入操作得定义一个缓冲数组和定义一个返回读取长度的len
- 关闭流
- 完成
代码:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class CopyAllFile {
public static void main(String[] args) throws Exception {
//1.创建源和目标
File srcDir = new File("D:/资料/test");
File destDir = new File("D:/资料/test_copy");
if(!destDir.exists()){
destDir.mkdirs();
}
copy(srcDir,destDir);
}
public static void copy(File src,File dest) throws Exception{
if(src.isDirectory()){
//是目录,就在目标文件夹中创建与源文件夹相同名称的文件夹
File destDir = new File(dest,src.getName());
destDir.mkdir();
//列举出所有的文件对象
File[] fs = src.listFiles();
//遍历所有的文件对象
for (File file : fs) {
copy(file,destDir);
}
}else{
File file1 =new File(dest,src.getName());
copyFile(src,file1);
}
}
public static void copyFile(File inputFile,File outputFile) throws Exception{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(inputFile));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outputFile));
byte[] buffer = new byte[1024];
int len = -1;
while((len = in.read(buffer)) != -1){
out.write(buffer, 0, len);
}
in.close();
out.close();
}
}
当然,也可以有这样的需求,比如,我只想复制.avi的视频文件,那么这时候就得有一个筛选器,java给我我们提供了:
File[] fs = dir.listFiles(FilenameFilter的实例)
必须覆盖类中的accept方法 boolean accept(File dir,String name){}
File[] fs = srcDir.listFiles(new FilenameFilter(){
@Override
public boolean accept(File dir, String name){
return new File(dir,name).isFile() && name.endsWith(".java");
}
});
IO流-文件夹的拷贝的更多相关文章
- IO流文件拷贝
目录 IO流文件拷贝 前言 字节流(使用FileInputStream和FileOutputStream读取每一个字节...) 字节流(使用FileInputStream和FileOutputStre ...
- Java字节流实现文件夹的拷贝
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io ...
- Linux下 两台机器文件/文件夹 相互拷贝
Linux下 两台机器文件/文件夹 相互拷贝 设有两台机器 :A:*.101及 B:*.102. 把A下的.temp/var/a.txt拷贝到B机器的/text/目录下: 进入B机器:scp root ...
- Java IO 流-- 文件拷贝
IO流操作套路: 1.创建源: 2.选择流: 3.操作: 4.释放资源 上代码: package com.xzlf.io; import java.io.File; import java.io.Fi ...
- IO流--文件处理
import java.io.*; public class io { public static void main(String[] args) { ListDemo(); File dir = ...
- 【Android】数据存储-java IO流文件存储
1.数据持久化:将在内存中的瞬时数据保存在存储设备中.瞬时数据:设备关机数据丢失.持久化技术提供一种机制可以让数据在瞬时状态和持久状态之间转换. 2.Android中简单的三种存储方式:文件存储.Sh ...
- java IO流文件的读写具体实例
IO流的分类:1.根据流的数据对象来分:高端流:所有的内存中的流都是高端流,比如:InputStreamReader 低端流:所有的外界设备中的流都是低端流,比如InputStream,Output ...
- shell脚本编写某一文件夹内拷贝某一段文件(有则跳过没有则拷贝)
必须是同一台服务器下,或者挂载目录,不同服务器下没办法查询目录中是否有该文件 如果不在同一服务器下,可以把要查询的那个服务器的文件夹设置共享挂在到当前服务器 或者可以把脚本写到要拷贝的服务器上,那么s ...
- Python学习(九)IO 编程 —— 文件夹及文件操作
Python 文件夹及文件操作 我们经常会与文件和目录打交道,对于这些操作,python可以使用 os 及 shutill 模块,其中包含了很多操作文件和目录的函数. os 可以执行简单的文件夹及文件 ...
随机推荐
- JSON的多样格式
//JSON – Properties 方便前台列表显示 [{"年月":2002.01,"北京分公司":2214688,"河北分公司":3 ...
- Ansible 手册系列 一(介绍)
一 介绍 Ansible 是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack.Ansible 是通过 Python 语言开发.Ansible 平 ...
- laravel怎么获取到public路径
app_path() app_path函数返回app目录的绝对路径: $path = app_path(); 你还可以使用app_path函数为相对于app目录的给定文件生成绝对路径: $path = ...
- [Android]Adb connection Error:远程主机强迫关闭了一个现有的连接
目前,针对Android手机研发的刷机软件和手机助手软件,都会调用Google开发的adb工具与手机进行通信. 有的刷机软件或者手机助手软件,在系统里会常驻一个服务,独占adb的端口(5037),这样 ...
- centos静默安装oracle12c
配置系统和安装所需软件包 关闭selinux 临时关闭(不用重启) [root@SVR-3-125 ~]# setenforce 0 修改配置文件(需要重启): 将SELINUX=enforcing ...
- LA3029
题解: 一个类似尺取法的算法 代码: #include<cstdio> #include<algorithm> using namespace std; ; int T,n,m ...
- LeetCode OJ:Tenth Line(文件第十行)
How would you print just the 10th line of a file? For example, assume that file.txt has the followin ...
- Spring整合hibernate:3、使用XML进行声明式的事务管理
配置applicationContext.xml文件 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 2 ...
- MetaPost使用
简介 MetaPost是一种制图语言,由John D. Hobby开发. 如果你要学习它,可以去下面的网址看看. 官网:http://tug.org/metapost 权威手册:http://tug. ...
- Xcode Server (Xcode9)搭建CI
Xcode 9将Xcode Server集成进来了,这是Xcode一个新特性,不用去单独下载server了,server可以用来做CI.自动化Test等等.这里主要介绍搭建CI,相当简单 打开开关,新 ...