黑马程序员技术交流社区

标题: 昨天面试没写全的笔试题 [打印本页]

作者: 没说的话……    时间: 2015-1-12 22:13
标题: 昨天面试没写全的笔试题
复制指定目录下的指定文件,并修改后缀名。就这题 代码太长了 老忘记怎么写

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();
        }
}



作者: 鹰击长空168    时间: 2015-1-13 00:10
收藏了,谢谢分享
作者: wata    时间: 2015-1-13 01:51
看个解题
作者: kenfine    时间: 2015-1-13 07:47
面试时间一般是多久啊?远程操控看桌面?在写东西的时候一些知识点可以网上查或是查阅API不?
作者: 邓士林    时间: 2015-1-13 08:09
感觉好多面试题都是视频里面的
作者: outsider1020    时间: 2015-1-13 08:59
谢谢了。。。。。
作者: 飘零宾    时间: 2015-1-13 09:03
这题是不是都考?看到好几次类似的了。还有笔试有时间限制吗?
作者: lwj123    时间: 2015-1-13 09:03
好像基本上每个人都有这个题哦
作者: 以利亚    时间: 2015-1-13 09:12
感谢分享
作者: Piaoyu    时间: 2015-1-13 09:45
谢谢分享
作者: noiary    时间: 2015-1-13 11:03
我也写一个~
  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. }
复制代码

作者: jant60    时间: 2015-1-13 11:33
面试里面笔试,需要写导入哪些包吗?是不是在纸上写呢?
作者: lovejjfg    时间: 2015-1-13 11:51
好紧张啊!!
作者: 油茶籽    时间: 2015-1-13 12:12
面试还要手写代码么
作者: 帅帅    时间: 2015-1-13 12:54
只能先记下来去写了




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