黑马程序员技术交流社区

标题: 自己做了一个小程序,专门用来提取视频的 [打印本页]

作者: Vista    时间: 2014-8-7 21:55
标题: 自己做了一个小程序,专门用来提取视频的
本帖最后由 Vista 于 2014-8-7 22:01 编辑

       本人在看教学视频的时候,发现视频大多数都是一个文件夹里面有一个或几个视频,看完之后就得换文件夹,很麻烦。
所以我自己做了一个小程序,专门用来把文件夹里的视频给提取出来,先看看效果图。
       这是张孝祥老师的视频教程,每个文件夹里面都有视频(用来做测试,视频不全)。

程序运行后,文件夹里面的视频都提取出来了,并且文件夹都删掉了。下面是程序执行之后的效果图。


下面是源码:
  1. <p>
  2. import java.io.File;</p><p>public class FiltMoveTool {
  3. private static String rootPath;//用于记录根目录路径</p><p> public static void main(String[] args) {
  4.   String dirPath = "F:\\baiduyundownload\\张孝祥2010年贺岁视频:Java高新技术";
  5.   extractFile(dirPath,true);
  6. }</p><p> //提取文件夹里面的文件
  7. private static void extractFile(String dirPath,boolean flag) {
  8.   if(flag){
  9.    rootPath = dirPath;//记录根目录路径
  10.   }
  11.   File root = new File(dirPath);//根目录
  12.   File[] dirFiles = root.listFiles();//获得所有的文件夹
  13.   for (File file : dirFiles) {</p><p>   if(file.isDirectory()){
  14.     String filePath = file.getAbsolutePath();//获得文件夹的绝对路径</p><p>    extractFile(filePath,false);//递归调用
  15.     deleteFile(file);//删除文件夹
  16.    }else
  17.     if(file.isFile()){</p><p>     String name = file.getName();//获取文件名
  18.      String sub = name.substring(name.length()-3, name.length());//得到后缀名  如  avi </p><p>     if("avi".equals(sub)){
  19.       //System.out.println(rootPath +"<a href='file://\\"+file.getName'>\\"+file.getName</a>());
  20.       File fnew = new File(rootPath +"<a href='file://\\"+file.getName'>\\"+file.getName</a>()); //将文件移到新文件里
  21.       file.renameTo(fnew);
  22.      }</p><p>    }
  23.   }
  24. }
  25. //删除文件夹以及里面所有文件
  26. private static void deleteFile(File file){</p><p>  if(file.isFile()){
  27.    file.delete();
  28.   }else if(file.isDirectory()){
  29.    File files[] = file.listFiles();
  30.    for(int i=0;i<files.length;i++){
  31.     deleteFile(files[i]);
  32.    }
  33.   }
  34.   file.delete();
  35. }
  36. }
  37. </p><p> </p>
复制代码


作者: alexanda    时间: 2014-8-7 22:01
楼主有才!!!我也是深深受到这个问题困扰了的!这里面涉及了哪些知识点和技术啊?求告知哈!等等我也学习哈
作者: Vista    时间: 2014-8-7 22:04
alexanda 发表于 2014-8-7 22:01
楼主有才!!!我也是深深受到这个问题困扰了的!这里面涉及了哪些知识点和技术啊?求告知哈!等等我也学习 ...

其实就涉及到了文件的操作。。。很简单的,加油
作者: Vista    时间: 2014-8-7 22:06
代码不知道怎么乱了,再发一遍。。。。

  1. import java.io.File;

  2. public class FiltMoveTool {
  3.         private static String rootPath;//用于记录根目录路径

  4.         public static void main(String[] args) {
  5.                 String dirPath = "F:\\baiduyundownload\\张孝祥2010年贺岁视频:Java高新技术";
  6.                 extractFile(dirPath,true);
  7.         }

  8.         //提取文件夹里面的文件
  9.         private static void extractFile(String dirPath,boolean flag) {
  10.                 if(flag){
  11.                         rootPath = dirPath;//记录根目录路径
  12.                 }
  13.                 File root = new File(dirPath);//根目录
  14.                 File[] dirFiles = root.listFiles();//获得所有的文件夹
  15.                 for (File file : dirFiles) {

  16.                         if(file.isDirectory()){
  17.                                 String filePath = file.getAbsolutePath();//获得文件夹的绝对路径

  18.                                 extractFile(filePath,false);//递归调用
  19.                                 deleteFile(file);//删除文件夹
  20.                         }else
  21.                                 if(file.isFile()){

  22.                                         String name = file.getName();//获取文件名
  23.                                         String sub = name.substring(name.length()-3, name.length());//得到后缀名  如  avi

  24.                                         if("avi".equals(sub)){
  25.                                                 //System.out.println(rootPath +"\\"+file.getName());
  26.                                                 File fnew = new File(rootPath +"\\"+file.getName()); //将文件移到新文件里
  27.                                                 file.renameTo(fnew);
  28.                                         }

  29.                                 }
  30.                 }
  31.         }
  32.         //删除文件夹以及里面所有文件
  33.         private static void deleteFile(File file){

  34.                 if(file.isFile()){
  35.                         file.delete();
  36.                 }else if(file.isDirectory()){
  37.                         File files[] = file.listFiles();
  38.                         for(int i=0;i<files.length;i++){
  39.                                 deleteFile(files[i]);
  40.                         }
  41.                 }
  42.                 file.delete();
  43.         }
  44. }
复制代码

作者: tonglingwang    时间: 2014-8-7 23:02
多谢分享,同样也有这样的困扰,看来的努力学习,害的会应用啊

作者: bbdeyouxang    时间: 2014-8-7 23:18
楼主给力,活学活用!
作者: 萍水相逢    时间: 2014-8-8 06:43
这么给力!楼主太厉害了!
作者: kangkai    时间: 2014-8-8 08:50
io流还没学到  不过谢谢分享了~~~~
作者: 曾欢    时间: 2014-8-8 09:57
厉害,学以致用
作者: 贾浩田    时间: 2014-8-8 12:09
厉害,学以致用
作者: 魏诚东    时间: 2014-8-8 14:16
学以致用·
作者: jeromechen    时间: 2014-8-8 14:19
不错,学完IO就立即用,这实践经验好
作者: 天邃任我桓    时间: 2014-8-8 15:48
楼主膜拜啊
作者: yqj    时间: 2014-8-8 16:00
lz给力,赞一个
作者: 陈永赛    时间: 2014-8-13 11:02
厉害,这只是基础应用么,对我来说,感觉有点遥远。:)
作者: 奋斗的小耗子    时间: 2014-8-13 11:18
学以致用,楼主好样的
作者: 黑马-胡明    时间: 2014-8-13 13:14
楼主有才。
作者: 刘高峰    时间: 2014-8-13 18:51
赞一个{:3_47:}
作者: 左脑想你    时间: 2014-8-13 19:10
我也写了不过我想给他搞成可视化界面~~到时就有通用性了
作者: 碎月€弈峙    时间: 2014-8-13 19:52
活学活用,很好
作者: 小糊涂神    时间: 2014-8-13 20:46
楼主人才啊,做我大哥可否,哈哈!
作者: Vista    时间: 2014-8-13 23:08
小糊涂神 发表于 2014-8-13 20:46
楼主人才啊,做我大哥可否,哈哈!

呵呵,加油好好学,你也行的。不懂得咱们可以交流
作者: Vista    时间: 2014-8-13 23:09
左脑想你 发表于 2014-8-13 19:10
我也写了不过我想给他搞成可视化界面~~到时就有通用性了

嗯嗯,我也做过,不过当时使用C#做的,Java的你来做吧,哈哈
作者: Vista    时间: 2014-8-13 23:10
陈永赛 发表于 2014-8-13 11:02
厉害,这只是基础应用么,对我来说,感觉有点遥远。

不遥远,加油,相信自己。
作者: David.L    时间: 2014-8-13 23:59
本帖最后由 David.L 于 2014-8-14 00:17 编辑

赞扬楼主的动手,没细看代码,但发现了楼主获取扩展名只能是固定3位的,如果是rm或rmvb的不是就不能用了?个人建议可以在毕姥爷的获取文件夹所有内容那个事例上拓展
增加复制文件,和删除功能,即可解决问题
还可以增加重命名前缀,使播放器播放时会自动添加列表

也可以利用修改后文件改变路径使文件直接移动到指定目录

最后,还有更直接的,哈哈,代码都不用写,直接搜索文件夹下*·*文件,然后剪切粘贴,此方式最快哈。
来个玩笑~

作者: Vista    时间: 2014-8-14 08:38
David.L 发表于 2014-8-13 23:59
赞扬楼主的动手,没细看代码,但发现了楼主获取扩展名只能是固定3位的,如果是rm或rmvb的不是就不能用了? ...

谢谢您的意见,受教了
作者: Fengs    时间: 2014-8-14 16:38
要活学活用,注意思考




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2