黑马程序员技术交流社区

标题: 黑马测试题,没做出来,关于文件操作的 [打印本页]

作者: 张涛的狂怒    时间: 2014-7-26 19:09
标题: 黑马测试题,没做出来,关于文件操作的
本帖最后由 张涛的狂怒 于 2014-8-6 09:58 编辑

编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt
我只把文件复制过去了,但是怎么改文件后缀?用rename吗?还是把文件名分解了?还有复制前改后缀方便还是复制后改后缀方便。
public class test9 {
        public static void main(String args[]) throws Exception {
                System.out.print("请输入源目录(所要复制的目录,格式如--c:\\java):");
                BufferedReader input = new BufferedReader(new InputStreamReader(
                                System.in));
                String fromPath = null;
                // 源目录(所要复制的目录)
                String toPath = null;
                // 目标目录
                fromPath = input.readLine();
                System.out.println();
                System.out.print("请输入目标目录(格式如--c:\\java):");
                toPath = input.readLine();
                test9.copyFiles(fromPath, toPath);
                System.out.println();
                input.readLine();

        }

        public static void copyFiles(String fromPath, String toPath)
                        throws Exception {
                File fromFile = new File(fromPath);
                if (fromFile.exists()) {
                        File toFile = new File(toPath);
                        if (toFile.exists()) {
                                System.out.println("目录" + toPath + "已经存在,复制文件操作失败!");
                        }else {
                                if (fromFile.isFile()) {
                                        // 复制文件
                                        File newToFile = new File(toPath);
                                
                                        newToFile.createNewFile();
                                       
                                        FileInputStream inFile = new FileInputStream(fromFile);
                                       
                                        FileOutputStream outFile = new FileOutputStream(newToFile);
                                       
                                        FileChannel inChannel = inFile.getChannel();//得到对应的文件通道
                                
                                        FileChannel outChannel = outFile.getChannel();//得到对应的文件通道
                                       
                                        long bytesWritten = 0;
                                       
                                        long byteCount = inChannel.size();
                                       
                                        while (bytesWritten < byteCount) {
                                                 //连接两个通道,并且从in通道读取,然后写入out通道

                                                bytesWritten += inChannel.transferTo(bytesWritten,
                                                               
                                                                byteCount - bytesWritten, outChannel);
                                                                                    }

                                       
                                        System.out.println(fromFile.getName() + "已经成功为"
                                                        + newToFile.getAbsolutePath() );
                                       
                                        inFile.close();
                                        outFile.close();
                                }

                                else { // 处理文件夹
                                        if (toFile.mkdir()) { // 复制文件夹
                                                System.out.println("目录" + toFile.getAbsolutePath()
                                                                + "已经创建!");
                                                File[] info = fromFile.listFiles();
                                                for (int i = 0; i < info.length; i++) {
                                                        String toPathTemp = toPath + "\\"
                                                                        + info.getName();
                                                        copyFiles(info.getAbsolutePath(), toPathTemp);// 递归调用
                                                }
                                        }

                                        else {
                                                System.out.println("目录" + toFile.getAbsolutePath()
                                                                + "创建失败!");
                                        }
                                }
                        }
                } else {
                        System.out.println("目录" + fromPath + "不存在,复制文件操作失败!");
                }
        }
}

作者: 张涛的狂怒    时间: 2014-7-26 19:19
都没下班???
作者: LYP    时间: 2014-7-26 19:26
用replace替代方法把字符串".java"换成".txt"
作者: 渴望学习    时间: 2014-7-26 20:04
这不是做出来了嘛
作者: 张涛的狂怒    时间: 2014-7-26 20:33
渴望学习 发表于 2014-7-26 20:04
这不是做出来了嘛

没改后缀
在哪改?

作者: 渴望学习    时间: 2014-7-26 20:42
我不会,刚才看你的代码,也在找呢。等着大神解答吧
作者: jwx555    时间: 2014-7-26 20:46
改毛后缀啊
FileWriter("filename.txt") 就行了
作者: masai158    时间: 2014-7-26 21:27
取出文件名称+.txt 我是这样的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2