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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙浩迪 中级黑马   /  2012-6-27 21:11  /  1261 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


public class rr {

         public static void main(String[] args) {
               
                 File file = new File("E:\\workspace");
                 List  data = new ArrayList();
                 data=showDir(file,data); //我把想要的java文件存在集合里面了, 现在data集合里面装的是文件,我怎么用流把集合里面装的文件复制到我的其它盘的xx文件夹下啊?
                  
                 
                 for (Object ff : data) {
                       
                  
                       
                }
                  
                  
        }
         
         public static List  showDir(File f,List data){
                 
                 File[] fi =f.listFiles();
                 for(int i=0;i<fi.length;i++){
                  if(fi[i].isDirectory()){
                          
                            showDir(fi[i],data);
                            
                  }else{
                          
                           if(fi[i].getName().endsWith(".java")){
                                  
                                  // System.out.println(fi[i].getName());
                                  
                                   data.add(fi[i].getName());
                           }
                          
                  }         
                  
                 }
                 return data;
         }
                  
}

哪位大侠帮帮忙啊, 琢磨2小时了。。

2 个回复

倒序浏览
import java.io.*;
import java.util.*;
class rr {

         public static void main(String[] args) throws IOException{
               
                 File file = new File("D:\\JDK6.0\\java201206");
                 List<String>  data = new ArrayList<String>();
                 data=showDir(file,data);
                 fileCopy("E:\\copy",data);       
               
        }
         
         public static List<String>  showDir(File f,List<String> data)throws IOException{
                 
                 File[] fi =f.listFiles();
                 for(int i=0;i<fi.length;i++){
                                          if(fi[i].isDirectory())
                                                        showDir(fi[i],data);               
                                         else{  
                                              if(fi[i].getAbsolutePath().endsWith(".java"))
                                                           data.add(fi[i].getAbsolutePath());//这里用路径,不要用Name
                                          }         
                  
                 }
                 return data;
         }
                       
                public static void fileCopy(String index,List<String> list)throws IOException {               
                        File fileNext=new File(index);
                        if(!fileNext.exists())
                                fileNext.mkdir();
                        BufferedReader br=null;
                        BufferedWriter bw=null;
                       
                        for(String fi:list){
                                File file=new File(fi);
                                if(file.isDirectory())
                                        break;
                                bw=new BufferedWriter(new FileWriter(fileNext+"\\\\"+file.getName()));
                                br=new BufferedReader(new FileReader(fi));;
                                String s=null;
                                while((s=br.readLine())!=null){       
                                       
                                        bw.write(s);
                                        bw.newLine();
                                        bw.flush();
                                }
                               
                        }
                        bw.close();
                        br.close();
                }
       
      
}
回复 使用道具 举报
本帖最后由 韦念欣 于 2012-6-27 23:11 编辑

这个是我写的一个拷贝某文件夹中的.java文件到另个文件夹中,拷贝后要保持原文件夹的目录

楼主可以参考参考。

  1. /**
  2. *         拷贝某文件夹中的.java文件到另个文件夹中,拷贝后要保持源文件夹的目录。
  3. *         思路:
  4. *                 1)定义拷贝文件的函数,接收两个文件参数(源和目标)
  5. *                 2)对源目录进行判断,不存在,抛异常,如果存在,先判断是否是文件,如果是则调用复制文件的功能
  6. *                        
  7. *                 3)如果是是目录,调用  File.listFiles()方法将文件存储进数组
  8. *                 4)遍历数组,判断文件,如果是目录,获取该文件名,在目的处创建一个,并在次掉用copyDir()的功能
  9. *                 5)如果是.java文件,调用copyFile()的功能对文件进行复制
  10. *         
  11. * 代码实现如下                       
  12. */

  13. import java.io.*;
  14. import java.util.*;

  15. public class CopyFile {
  16.         private static final int BUFFER_SIZE = 1024 * 1024;

  17.         public static void main(String[] args) throws IOException {

  18.                 File fromPath = new File("c:\\program files\\java");                         // 从这个目录

  19.                 File toPath = new File("D:\\");                                                           // 复制到这个目录

  20.                 copyDir(fromPath, toPath);                                                                // 开始复制
  21.         }

  22.         /**
  23.         * 定义功能,对目录进行拷贝
  24.         * @param fromPath
  25.         * @param toPath
  26.         * @throws IOException
  27.         */
  28.         private static void copyDir(File fromPath, File toPath) throws IOException {

  29.                 //对给定的目录进行判断,不存在,则抛出异常
  30.                 if (!fromPath.exists()) {
  31.                         throw new RuntimeException("目录不存,请重新输入!");
  32.                 }
  33.                 else if (fromPath.isFile()) {
  34.                         copyFiles(fromPath, toPath);
  35.                 } else {
  36.                         File[] files = fromPath.listFiles();            // 将目录中的文件存储进数组
  37.                         for (File file : files) {                                // 对数组进行遍历
  38.                                 // 对文件进行判断,如果是文件,则继续调用copyDir方法,递归
  39.                                 if (file.isDirectory()) {               
  40.                                         //获取文件的的绝对路径,和文件名,并封装
  41.                                         File dir = new File((toPath.getAbsolutePath() + "\\" + fromPath.getName()));
  42.                                         System.out.println(dir.getAbsolutePath());
  43.                                         dir.mkdirs();                                // 在目的地创建文件夹
  44.                                         copyDir(file, dir);                        // 对目录进行递归,深度遍历
  45.                                 } else if (file.getName().endsWith(".java")){
  46.                                         copyFiles(file, toPath);              // 调用复制文件的功能
  47.                                 }
  48.                         }
  49.                 }
  50.         }

  51.         /**
  52.         * 定义复制文件的功能
  53.         * @param sFile
  54.         * @param pFile
  55.         * @throws IOException
  56.         */
  57.         private static void copyFiles(File sFile, File pFile) throws IOException {

  58.                 FileInputStream fis = null;
  59.                 FileOutputStream fos = null;
  60.                 File fromFile = sFile.getAbsoluteFile();

  61.                 // 创建集合,对文件的父目录进行切割,并存储进集合
  62.                 List<String> list = Arrays.asList(sFile.getParent().split("\\\\"));

  63.                 // 获取文件的直接父目录的字符串
  64.                 String str = list.get(list.size() - 1);

  65.                 // 获取目标的绝对路径,和文件的父目录,并在目的地创建文件夹
  66.                 new File(pFile.getAbsoluteFile() + "\\" + str).mkdirs();

  67.                 // 获取文件上传的目的地
  68.                 String newfileName = pFile.toString() + "\\" + str;

  69.                 // 获取文件名
  70.                 String fileName = fromFile.getName();

  71.                 // 创建流关联文件,并写入目的地
  72.                 fis = new FileInputStream(fromFile);
  73.                 fos = new FileOutputStream(newfileName + "\\" + fileName);

  74.                 byte[] buf = new byte[BUFFER_SIZE];
  75.                 int len = 0;
  76.                 while ((len = fis.read(buf)) != -1) {
  77.                         fos.write(buf, 0, len);
  78.                 }

  79.                 //关流
  80.                 fis.close();
  81.                 fos.close();
  82.         }
  83. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马