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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt,这该怎么办呢,没思路??????

7 个回复

倒序浏览
1,先遍历该文件夹下的所有文件,找出是.Java文件
2,将这个文件存入到ArrayList 中
3,将这个ArrayList循环遍历的到文件,获取文件的绝对路径  
还要文件名要用到s.substring(0,s.lastIndexof(.java))得到文件名(除掉.Java)
将使用输入输出流 输出流中文件名是变化的  是文件名(除掉.Java)+".txt"
4,这样就好了
我给你写个代码实现以下
回复 使用道具 举报
package itheima;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

public class Demo5 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
               
                 File dir=new File("e:\\sql");
                 ArrayList<File> list=new ArrayList<File>();
                 ArrayList<File> lists=selectlist(dir,list);
                 write2file(lists);

        }

         public static ArrayList<File> selectlist(File dir,ArrayList<File> list) {
                File[] files=dir.listFiles();
                for(int i=0;i<files.length;i++){
                        if(files[i].isDirectory()){
                                selectlist(files[i],list);
                        //System.out.println(files[i].getAbsolutePath());
                        }
                        else
                                if(files[i].getName().endsWith(".sql"))
                                        list.add(files[i]);
                        //System.out.println(files[i].getAbsolutePath());
               
                }
                return list;         
        }
        public static void write2file(ArrayList<File> lists){
               
                try {
                       
                        for(File f:lists){
                                String s=f.getAbsolutePath();
                                String name=f.getName();
                                String name1=name.substring(0,name.lastIndexOf(".sql"));
                                BufferedReader br=new BufferedReader(new FileReader(s));
                                System.out.println(s);
                                System.out.println(lists.size());
                                String s1="e:\\";
                                File file=new File(s1+name1+".txt");
                                BufferedWriter bw=new BufferedWriter(new FileWriter(file));
                    String len=null;
                    while((len=br.readLine())!=null){
                            bw.write(len);
                            bw.newLine();
                            bw.flush();
                    }
                             bw.close();
                             br.close();
                     }
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                 }
       }  
}


回复 使用道具 举报
看我得帖子吧, 里面有这一题
回复 使用道具 举报
看我得帖子吧,我的基础测试题,请参阅。。。
回复 使用道具 举报
我也有这个题
回复 使用道具 举报
题目很简单啊,你是第几期的??
回复 使用道具 举报
冥夜 中级黑马 2014-12-14 13:46:24
8#
  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedOutputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;

  6. //复制一个文件夹下的所有java文件到另一目录,且将。java替换成。txt
  7. public class CopyDir
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                 File src=new File("D:\\src");//想要复制的文件目录
  12.                 File dest=new File("D:\\srcCopy");//目的文件目录
  13.                
  14.                 dest.mkdir();//创建目的文件夹
  15.                 copyDir(src,dest);//复制文件并更改格式
  16.         }

  17.         private static void copyDir(File src, File dest)
  18.         {
  19.                 File[] files=src.listFiles();//获取文件列表
  20.                 for(File file:files)
  21.                 {
  22.                         if(file.isDirectory())//如果是文件夹
  23.                         {
  24.                                 File f=new File(dest.getAbsolutePath()+"\\"+file.getName());//封装目的地对应的文件夹对象
  25.                                 f.mkdir();//创建目的地对应目录
  26.                                 copyDir(file,f);//递归展开目录
  27.                         }
  28.                         else//如果是文件
  29.                         {
  30.                                 if(file.getName().endsWith(".java"))//如果是java文件
  31.                                 {
  32.                                         String path=dest.getAbsoluteFile()+"\\"+file.getName();//用字符串保存对应的文件路径
  33.                                         path=path.replaceAll(".java", ".txt");//将。java替换成。txt
  34.                                         File f=new File(path);//将该文件对象封装
  35.                                         copyFile(file,f);//复制文件
  36.                                 }
  37.                         }
  38.                 }
  39.         }

  40.         private static void copyFile(File src, File dest)
  41.         {
  42.                 try
  43.                 {
  44.                         BufferedInputStream bi=new BufferedInputStream(new FileInputStream(src));//创建文件输入流
  45.                         BufferedOutputStream bo=new BufferedOutputStream(new FileOutputStream(dest));//创建文件输出流
  46.                        
  47.                         //写入数据
  48.                         byte[] buf=new byte[1024];
  49.                         int len=0;
  50.                         while((len=bi.read(buf))!=-1)
  51.                         {
  52.                                 bo.write(buf,0,len);
  53.                         }
  54.                         bi.close();
  55.                         bo.close();
  56.                 }
  57.                 catch (Exception e)
  58.                 {
  59.                         e.printStackTrace();
  60.                 }
  61.                
  62.         }
  63. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马