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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

21Guns。

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 21Guns。 初级黑马   /  2014-9-8 01:51  /  1472 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt
我只会递归得到 绝对路路径下的后缀名.java文件. 然后题目还说要把.java文件写到指定目录, IO读写我都会
就是不明白怎么把方法里面的东西写进指定目录下...  好恶心  想半天想不出来谁救救我啊
public class Test9 {
        public static void main(String[] args) throws IOException{
                File f =new File("E:\\0725\\11");
                Lujing(f);
        }
        public static void Lujing(File f)throws IOException{
                File [] src =f.listFiles();
                for(File src1 :src){
                        if(src1.isDirectory()){
                                Lujing(src1);
                        }
                        else{
                                if(src1.getName().endsWith(".java")){
                                        System.out.println(src1.getName()+src1.getAbsolutePath());
                                }
                        }
                }
        }
       
}

3 个回复

倒序浏览
  1. public class FileCopy {
  2.        
  3.         public static void main(String[] args) throws IOException{
  4.                 File file = new File("E:/dw");
  5.                 recursion(file,"G:/");
  6.         }
  7.        
  8.         public static void recursion(File file,String targetPath) throws IOException{
  9.                 if(!file.exists()){
  10.                         System.out.println("文件或者文件夹不存在!");
  11.                         return;
  12.                 }
  13.                 if(file.isFile()){
  14.                         copy(file,targetPath+"/"+file.getName());
  15.                 }
  16.                 if(file.isDirectory()){
  17.                         File dir = new File(targetPath+"/"+file.getName());
  18.                         dir.mkdir();
  19.                         File[] files = file.listFiles();
  20.                         for(File f : files){
  21.                                 recursion(f,targetPath+"/"+file.getName());
  22.                         }
  23.                 }
  24.         }
  25.        
  26.         public static void copy(File file,String targetPath) throws IOException{
  27.                 FileInputStream fis = new FileInputStream(file);
  28.                 FileOutputStream fos = new FileOutputStream(targetPath);
  29.                
  30.                 int len = 0;
  31.                 byte[] buf = new byte[1024];
  32.                
  33.                 while((len=fis.read(buf)) != -1){
  34.                         fos.write(buf,0,len);
  35.                 }
  36.                
  37.                 fis.close();
  38.                 fos.close();
  39.         }

  40. }
复制代码
回复 使用道具 举报
马,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt
回复 使用道具 举报
按你的要求写了一个
  1. /*
  2. 需求:
  3. 将指定目录下所有.java文件拷贝到另一个目录中,并将扩展名改为.txt
  4. */
  5. import java.io.*;
  6. import java.util.*;
  7. class FileCopy
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                 File src = new File("D:\\test\\JavaTest");//指定目标文件夹
  12.                 File des = new File("D:\\test\\copy");//指定目的文件夹

  13.                 copyToTxt(src,".java",des);
  14.         }
  15.         public static void copyToTxt(File src,String key,File des)
  16.         {
  17.                 if (!des.exists())
  18.                         des.mkdir();//如果目的文件夹不存在则创建目录
  19.                 ArrayList<File> al = new ArrayList<File>();
  20.                 fileFilter(src,key,al);//过滤目标文件夹,将符合要求的文件添加到集合中
  21.                 for(File file:al)
  22.                 {
  23.                         System.out.println("File:"+file+"...copy:"+copyFile(file,key,des));//遍历集合,复制文件
  24.                 }
  25.         }
  26.         public static void fileFilter(File src,final String key,ArrayList<File> al)//过滤文件
  27.         {
  28.                 File[] list = src.listFiles(new FileFilter()
  29.                 {
  30.                         //定义过滤器,返回目录和以key结尾的文件
  31.                         public boolean accept(File pathname)
  32.                         {
  33.                                 if (pathname.isDirectory())
  34.                                         return true;
  35.                                 else
  36.                                         return pathname.getName().endsWith(key);
  37.                         }
  38.                 });
  39.                 for(File f:list)
  40.                 {
  41.                         if (f.isDirectory())
  42.                                 fileFilter(f,key,al);//若是目录则递归
  43.                         else
  44.                         {
  45.                                 al.add(f);//将过滤后的文件添加进指定集合
  46.                         }
  47.                 }
  48.         }
  49.         public static boolean copyFile(File file,String key,File des)//复制文件
  50.         {
  51.                 BufferedReader bufr = null;
  52.                 BufferedWriter bufw = null;
  53.                 try
  54.                 {
  55.                         bufr = new BufferedReader(new FileReader(file));
  56.                         bufw = new BufferedWriter(new FileWriter(new File(des,file.getName().replace(key,".txt"))));//用.txt替换key
  57.                         String line = null;
  58.                         while ((line=bufr.readLine())!=null)
  59.                         {
  60.                                 bufw.write(line);
  61.                                 bufw.newLine();
  62.                                 bufw.flush();
  63.                         }
  64.                         return true;
  65.                 }
  66.                 catch (IOException e)
  67.                 {
  68.                         throw new RuntimeException("复制失败");
  69.                 }
  70.                 finally
  71.                 {
  72.                         try
  73.                         {
  74.                                 if(bufr!=null)
  75.                                         bufr.close();
  76.                         }
  77.                         catch (IOException e)
  78.                         {
  79.                                 throw new RuntimeException("流关闭失败");
  80.                         }
  81.                         try
  82.                         {
  83.                                 if(bufw!=null)
  84.                                         bufw.close();
  85.                         }
  86.                         catch (IOException e)
  87.                         {
  88.                                 throw new RuntimeException("流关闭失败");
  89.                         }
  90.                 }
  91.         }
  92. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马