拷贝文件到指定目录
程序员文章站
2024-03-24 11:24:58
...
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
/**
* 查找制定目录所有的视频文件、
* 把符合条件的文件拷贝到制定目录
* @author hasee
*
*/
public class Demo84_FileSearchVideo {
public static void main(String[] args) {
// 视频所在文件夹
File file = new File("D:\\xx");
List<File> list = FileUtil.seaVideo(file);
Object[] array = list.toArray();
for (Object object : array) {
System.out.println(object);
}
// 拷贝到的路径
FileUtil.copyFile(list, "D:\\视频\\xx");
}
}
class FileUtil {
static List<File> fileList = new ArrayList<>(); // 保存符合条件的文件
/**
* 筛选符合条件的文件
* @param file 传入的文件路径
* @return 返回符合条件的文件集合
*/
public static List<File> seaVideo(File file){
if (file == null || ! file.exists()) { // 传入路径为null或者不存在
return null;
}
if (file.isFile() && file.getName().endsWith("avi")|| file.getName().endsWith("mp4")|| file.getName().endsWith("mkv")) { // 如果是个文件并且以mp4或avi结尾
fileList.add(file); // 就把文件添加到集合
}else if(file.isDirectory()) { // 如果是个目录
File[] files = file.listFiles(); // 列出目录所有文件
if (files != null) {
for (File f : files) { // 遍历目录
seaVideo(f); // 再次调用方法
}
}
}
return fileList; // 返回集合,此时所有符合条件的文件都已添加到集合内
}
/**
* 文件拷贝
* @param list 文件集合
* @param newPath 要拷贝到指定的路径
*/
public static void copyFile(List<File> list, String newPath) {
if (list == null || newPath == null) return;
new File(newPath).mkdirs(); // 新文件路径可能不存在,所以创建一下以防万一2
File[] childPath = list.toArray(new File[list.size()]); // 取出所有子文件路径的数组
for (File file : childPath) {
File newFile = new File(newPath + "/" + file.getName()); // 在新文件保存对于子文件名
try {
InputStream in = new FileInputStream(file);
OutputStream out = new FileOutputStream(newFile);
byte[] b = new byte[1024 * 5];
int len; // 保存每次从旧文件里读出数据的个数(长度)
while ((len = in.read(b)) != -1) {
out.write(b, 0, len);
}
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
转载于:https://my.oschina.net/u/4107179/blog/3048005
上一篇: J2ME(JSR75)组件之文件选择器
下一篇: 动画-js停顿效果