本帖最后由 吴杰栋 于 2014-8-29 21:40 编辑
在我们下载的视频.比如张孝祥老师的Java高新技术,由于是压缩包,我们在解压的时候,每个视频都会存在于两层的文件夹中,这样连续观看起来的话,需要点多次的文件夹,该需求就是将给定路径下的所有的avi文件(当然也可以指定其他文件)单独复制到一个文件夹中去,方便我们的学习- package wjd.file;
- //使用缓冲区 时间16161 不使用缓冲去是11690
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- /**
- *
- * @author 吴杰栋
- *2014年8月28日下午6:54:28
- *
- *需求:在网络上下载的各种视频文件,由于压缩包的存在,会导致视频文件会存在于多个文件夹中,这样观看起来会不方法
- * 该小程序可以完成对目标文件夹中avi格式视频的抽取,运行该程序后,会把目标文件中所有的avi文件复制到目标文件
- */
- public class CopyByAVI {
- public static void main(String[] args) throws IOException {
- //定义目标文件和文件过滤器,用来过滤.avi文件
- String url1 = "D:\\BaiduYunDownload\\java";
- File f1 = new File(url1);
- FindAVI fa = new FindAVI();
- //查找目标文件中的.avi文件
- long begin = System.currentTimeMillis();
- listAVI(f1, fa);
- long time = System.currentTimeMillis() - begin;
- System.out.println(time+"======================");
- }
- public static void listAVI(File f1, FindAVI fa) throws IOException {
- File[] files = f1.listFiles();
- for (int a = 0; a < files.length; a++) {
- //递归,查找
- if (files[a].isDirectory())
- listAVI(files[a], fa);
- else {
- //递归结束,找到源文件中所有的文件,然后通过文件过滤器,拿到.avi文件
- if (fa.accept(files[a])) {
- System.out.println(files[a]);
- //复制.avi文件
- copyavi(files[a]);
- }
- }
- }
- }
- //对.avi文件进行复制,由于上面时候到了递归,那么我们的目标文件就在该方法中创建,然后使用标准复制流程就可以
- public static void copyavi(File file) throws IOException {
- //创建目标文件夹,并把他创建出来
- String url2 = "D:\\Java高新";
- File f2 = new File(url2);
- f2.mkdir();
- FileInputStream fis = new FileInputStream(file);
- FileOutputStream fos = new FileOutputStream(new File(f2,file.getName()));
- //BufferedInputStream bis = new BufferedInputStream(fis);
- //BufferedOutputStream bos = new BufferedOutputStream(fos);
- byte[] buf = new byte[1024];
- int len = 0;
-
- while ((len = fis.read(buf)) != -1) {
- fos.write(buf, 0, len);
- }
-
- fis.close();
- fos.close();
- }
- }
- package wjd.file;
- import java.io.File;
- import java.io.FileFilter;
- public class FindAVI implements FileFilter {
- @Override
- public boolean accept(File arg0) {
- return arg0.getName().endsWith("avi");
- }
- }
复制代码
|
-
前.PNG
(100.52 KB, 下载次数: 5)
原始解压前文件
-
后.PNG
(222.04 KB, 下载次数: 14)
解压后,视频都在统一文件夹下
|