A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下载了高新技术的视频后,发现每个视频都有文件夹,每次打开好麻烦,于是想着用所学的知识来把这些全部视频抽取到一个指定文件夹下,
还请指教:
  1. /*
  2. 此方法用于抽取一个目录下多个文件夹下的相同后缀名的文件
  3. */
  4. import java.io.*;
  5. class  TakeFile
  6. {
  7.         public static void main(String[] args) throws Exception
  8.         {
  9.                 //指定要抽取的文件夹
  10.                 File file = new File("d:\\java高新技术");

  11.                 getFile(file);
  12.         }
  13.         public static void getFile(File Dir)throws Exception
  14.         {
  15.                 //FileOutputStream fos = new FileOutStream(file);
  16.                 File[] files = Dir.listFiles();
  17.                 for(File file : files)
  18.                 {
  19.                         if(file.isFile())
  20.                         {
  21.                                 if(file.getName().endsWith(".avi"))
  22.                                 {
  23.                                         FileInputStream Data = new FileInputStream(file);

  24.                                         //将文件写到指定目录
  25.                                         FileOutputStream fos = new FileOutputStream("d:\\java高新技术抽取\\"+file.getName());

  26.                                         byte[] by = new byte[1024];
  27.                                         int len = 0;
  28.                                         while((len = Data.read(by))!=-1)
  29.                                         {
  30.                                                 fos.write(by,0,len);
  31.                                         }
  32.                                         Data.close();
  33.                                         fos.close();

  34.                                         System.out.println(file.getName()+"抽取成功");
  35.                                 }
  36.                         }
  37.                         else
  38.                         {
  39.                                 getFile(file);
  40.                         }
  41.                 }
  42.        
  43.         }
  44. }
复制代码



6 个回复

正序浏览
华谦 中级黑马 2014-9-23 22:35:05
7#
Aaron_H 发表于 2014-9-23 22:08
楼主,把目的文件夹当做抽出来做参数吧,以后更换文件夹就不用该代码了

恩,也对,当时没想太多,只是为了解决自己打开时候的麻烦
回复 使用道具 举报
Aaron_H 来自手机 中级黑马 2014-9-23 22:08:17
地板
楼主,把目的文件夹当做抽出来做参数吧,以后更换文件夹就不用该代码了
回复 使用道具 举报
关于改善效率:
1、建议使用缓冲技术,并且把流放在for循环外面初始化
2、byte数组可以设置大一点,1K大小的数组对于复制大文件效率方面还是很拖后腿的
回复 使用道具 举报
只看到销魂的头像……
回复 使用道具 举报
hike_2008 发表于 2014-9-22 18:03
偷偷告诉楼主一个更厉害的方法 ,

看来是高手:lol
回复 使用道具 举报
偷偷告诉楼主一个更厉害的方法 ,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马