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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 没说的话…… 中级黑马   /  2015-1-12 22:13  /  1902 人查看  /  14 人回复  /   3 人收藏 转载请遵从CC协议 禁止商业使用本文

复制指定目录下的指定文件,并修改后缀名。就这题 代码太长了 老忘记怎么写

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;

/*
* 需求:复制指定目录下的指定文件,并修改后缀名。
* 指定的文件是:.java文件。
* 指定的后缀名是:.jad
* 指定的目录是:jad
*
* 数据源:e:\\java\\A.java
* 目的地:e:\\jad\\A.jad
*
* 分析:
*                 A:封装目录
*                 B:获取该目录下的java文件的File数组
*                 C:遍历该File数组,得到每一个File对象
*                 D:把该File进行复制
*                 E:在目的地目录下改名
*/
public class CopyFolderDemo {
        public static void main(String[] args) throws IOException {
                // 封装目录
                File srcFolder = new File("e:\\java");
                // 封装目的地
                File destFolder = new File("e:\\jad");
                // 如果目的地目录不存在,就创建
                if (!destFolder.exists()) {
                        destFolder.mkdir();
                }

                // 获取该目录下的java文件的File数组
                File[] fileArray = srcFolder.listFiles(new FilenameFilter() {
                        @Override
                        public boolean accept(File dir, String name) {
                                return new File(dir, name).isFile() && name.endsWith(".java");
                        }
                });

                // 遍历该File数组,得到每一个File对象
                for (File file : fileArray) {
                        // System.out.println(file);
                        // 数据源:e:\java\DataTypeDemo.java
                        // 目的地:e:\\jad\DataTypeDemo.java
                        String name = file.getName();
                        File newFile = new File(destFolder, name);
                        copyFile(file, newFile);
                }

                // 在目的地目录下改名
                File[] destFileArray = destFolder.listFiles();
                for (File destFile : destFileArray) {
                        // System.out.println(destFile);
                        // e:\jad\DataTypeDemo.java
                        // e:\\jad\\DataTypeDemo.jad
                        String name = destFile.getName(); // DataTypeDemo.java
                        String newName = name.replace(".java", ".jad");// DataTypeDemo.jad

                        File newFile = new File(destFolder, newName);
                        destFile.renameTo(newFile);
                }
        }

        private static void copyFile(File file, File newFile) throws IOException {
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
                                file));
                BufferedOutputStream bos = new BufferedOutputStream(
                                new FileOutputStream(newFile));

                byte[] bys = new byte[1024];
                int len = 0;
                while ((len = bis.read(bys)) != -1) {
                        bos.write(bys, 0, len);
                }

                bos.close();
                bis.close();
        }
}


评分

参与人数 2技术分 +2 黑马币 +4 收起 理由
张研老师 + 1 + 4 很给力!
lwj123 + 1 再接再厉!

查看全部评分

14 个回复

倒序浏览
收藏了,谢谢分享
回复 使用道具 举报
看个解题
回复 使用道具 举报
面试时间一般是多久啊?远程操控看桌面?在写东西的时候一些知识点可以网上查或是查阅API不?
回复 使用道具 举报
感觉好多面试题都是视频里面的
回复 使用道具 举报
谢谢了。。。。。
回复 使用道具 举报
这题是不是都考?看到好几次类似的了。还有笔试有时间限制吗?
回复 使用道具 举报
lwj123 金牌黑马 2015-1-13 09:03:59
8#
好像基本上每个人都有这个题哦
回复 使用道具 举报
感谢分享
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
我也写一个~
  1. package exercises;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;

  6. /**
  7. * 复制指定目录下的指定文件,并修改后缀名。
  8. *
  9. * @author always
  10. *
  11. */
  12. public class Test {

  13.         public static void main(String[] args) throws IOException {

  14.                 File file = new File(
  15.                                 "d:\\java\\java027\\Thinking In Java 练习题答案 第四版.rar");

  16.                 File destDir = new File("d:\\copyFile");

  17.                 File destFile = new File(destDir, file.getName());
  18.                 if (!destDir.exists())
  19.                         destDir.mkdir();

  20.                 // 复制文件
  21.                 copyFile(file, destFile);

  22.                 // 改后缀名
  23.                 changeFileName(destFile);
  24.         }
  25.         /**
  26.          * 修改文件后缀名
  27.          * @param destFile
  28.          */
  29.         private static void changeFileName(File destFile) {
  30.                
  31.                 //获取文件名
  32.                 String fileName = destFile.getName();
  33.                
  34.                 //拟定新的文件名
  35.                 String newFileName = fileName.substring(0, fileName.lastIndexOf("."))
  36.                                 + ".zip";
  37.                 File newFile = new File(destFile.getParent() + "//" + newFileName);
  38.                
  39.                 //修改文件名
  40.                 destFile.renameTo(newFile);
  41.         }
  42.        
  43.         /**
  44.          * 复制文件
  45.          * @param file 被复制的文件
  46.          * @param destFile 新文件
  47.          * @throws IOException
  48.          */
  49.         private static void copyFile(File file, File destFile) throws IOException {
  50.                 FileInputStream fis = new FileInputStream(file);
  51.                 FileOutputStream fos = new FileOutputStream(destFile);

  52.                 byte[] buf = new byte[1024];
  53.                 int len = 0;
  54.                 while ((len = fis.read(buf)) != -1) {
  55.                         fos.write(buf, 0, len);
  56.                         fos.flush();
  57.                 }
  58.                 fis.close();
  59.                 fos.close();
  60.         }

  61. }
复制代码
回复 使用道具 举报
面试里面笔试,需要写导入哪些包吗?是不是在纸上写呢?
回复 使用道具 举报
好紧张啊!!
回复 使用道具 举报
油茶籽 来自手机 中级黑马 2015-1-13 12:12:08
14#
面试还要手写代码么
回复 使用道具 举报
只能先记下来去写了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马