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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 金肖 中级黑马   /  2012-5-9 13:43  /  1728 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何将下面的复制文件的代码改写成  键盘录入的形式呢?
就是用户 输入   源目录和目的目录,我就给他复制到目的中

public class CopyTextTest {
        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                File oldFile = new File("E:\\d");

                System.out.println("oldFile:" + oldFile.length());

                File newFile = new File("F:\\");

                copyFiles(oldFile, newFile);

                System.out.println("newFile:" + newFile.length());
        }

        /**
         * 判断对文件进行深度遍历,判断是文件并且不是隐藏的, 就获取该文件的绝对路径和文件名在新的盘符下创建
         *
         * @param oldFile
         * @param newFile
         * @throws IOException
         */
        public static void copyFiles(File oldFile, File newFile) throws IOException {

                File[] file = oldFile.listFiles();// 将目中的文件存储进数组

                FileInputStream fis = null;
                FileOutputStream fos = null;

                for (int i = 0; i < file.length; i++) {
                        if (file.isDirectory()) {

                                // 获取该文件的绝对路径
                                String abspath = file.getAbsolutePath();
                                String a = abspath.toString().replaceFirst("E", "F"); // 将盘符替换
                                // 通过替换后的路径名和目录名将在目的地创建一个文件目录
                                new File(a).mkdirs();

                                copyFiles(file, newFile); // 对目录进行递归
                        } else {

                                // 若果是文件,就通过输入输出流将(路径+文件)写到目的地下
                                String filepath = file.getParent(); // 获取该文件的父目录绝对路径
                                String filename = file.getName(); // 获取该文件的名称

                                File goName = new File(filepath, filename);// 将文件封装成对象

                                fis = new FileInputStream(goName);  //读取文件

                                String newpath = filepath.replaceFirst("E", "F");
               
                                fos = new FileOutputStream(newpath.concat(filename));     //指定写入文件的目的地

                                byte[] buf = new byte[1024 * 1024];
                                int len = 0;
                                while ((len = fis.read(buf)) != -1) {
                                        fos.write(buf, 0, len);
                                }

                                fis.close();
                                fos.close();

                        }
                }
        }
}

3 个回复

正序浏览
任奇 发表于 2012-5-9 13:48
用Scanner类就可以了、
Scanner can = new Scanner(new BufferedInputStream(System.in));
String str = ci ...

那个是可以,但是我希望是将录入的信息  传递给复制文件的函数中,
回复 使用道具 举报
用Scanner类就可以了、
Scanner can = new Scanner(new BufferedInputStream(System.in));
String str = cin.nextLine();
此代码就是由用户输入一个字符串、
回复 使用道具 举报
不会。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马