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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刘汉文 于 2013-12-29 10:55 编辑

9、 编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt
package com.itheima;

import java.io.*;
import java.util.ArrayList;

public class Test_9
{
        public static void main(String[] args) throws Exception
        {
                File from=new File("f:\\music\\test");
                File to=new File("f:\\test1");
                if(!to.exists())
                        to.mkdir();
                ArrayList<File> al=new ArrayList<File>();
                getFile(from, al);
                BufferedInputStream bufi=null;
                BufferedOutputStream bufo=null;
                for(File file:al)
                {
                        bufi=new BufferedInputStream(new FileInputStream(file));//输入流
                        String s=file.toString().substring(file.toString().lastIndexOf("\\")).replace(".java",".txt");//获取文件名并进行后缀名的修改

                        bufo=new BufferedOutputStream(new FileOutputStream(new File(to,s)));//输出流
                        byte[] buf=new byte[1024*1024];
                        int len=0;
                        while((len=bufi.read(buf))!=-1)
                        {
                                bufo.write(buf, 0, len);
                                bufo.flush();
                        }
                        bufi.close();
                        bufo.close();
                }
        }
       
        public static void getFile(File from,ArrayList<File> al)//递归函数,获取所有.java的File.
        {
                File[] files=from.listFiles();
                for(File file:files)
                {
                        if(file.isDirectory())
                                getFile(file,al);
                        else
                        {
                                if(file.toString().endsWith(".java"))
                                        al.add(file);
                        }
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

4 个回复

倒序浏览
没有思路能做出来?如果你能自己写的,能写出来就已经有思路了。
如果是照着写做出来的,那就没用。必须知道每句话的原因,然后在写。
回复 使用道具 举报
你甚至省略了if的括号还有注释,要在这行工作的话有些规则是必须遵守的,
除非你以后不打算做这行业。
回复 使用道具 举报
sd110572 发表于 2013-12-28 19:30
没有思路能做出来?如果你能自己写的,能写出来就已经有思路了。
如果是照着写做出来的,那就没用。必须知 ...

只是谦逊的求点优化,思路当然有,而且很流畅,基本的递归,获得所有File并用集合存储,然后流读取,然后截取文件名,修改后缀名,从组成新File,最后流输出。

回复 使用道具 举报
nicenicenicenicenicenicenicenicenicenicenicenicenice
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马