黑马程序员技术交流社区

标题: 面试遇到的题,回来整理下,附上代码 [打印本页]

作者: 当我遇上你    时间: 2015-1-14 14:39
标题: 面试遇到的题,回来整理下,附上代码
本帖最后由 当我遇上你 于 2015-1-14 19:39 编辑
  1. package com.itheima;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileReader;
  6. import java.io.FileWriter;
  7. import java.io.FilenameFilter;
  8. import java.io.IOException;

  9. public class Copy {

  10.         public static void main(String[] args) throws IOException {
  11.                 File src = new File("D:\\A");
  12.                 File dest=new File("D:\\B");
  13.                
  14.                 copyDir(src,dest);
  15.         }
  16.        
  17.        
  18.         public static void copyDir(File src,File dest) throws IOException
  19.         {
  20.                 if(!dest.exists())
  21.                 {
  22.                         System.out.println("目录不存在,新建一个");
  23.                         dest.mkdirs();
  24.                 }
  25.                
  26.                 File[] files=src.listFiles(/*new FilenameFilter() {    //这里不能写过滤器,否则会直接滤掉子目录
  27.                                
  28.                                 @Override
  29.                                 public boolean accept(File dir, String name) {
  30.                                         File currfile = new File(dir,name);
  31.                                         if(currfile.isFile()&&name.endsWith(".java"))
  32.                                         return true;
  33.                                         return false;

  34.                                 }
  35.                 }*/);


  36. //实现文件夹复制               
  37.                 for(File file:files)
  38.                 {
  39.                         if(file.isDirectory())
  40.                         {
  41.                                 copyDir(file, new File(dest.getAbsolutePath()+"\\"+file.getName()) );
  42.                         }
  43.                         else
  44.                         {
  45.                                 if(file.getName().endsWith(".java"))
  46.                                 {
  47.                                         copyFile(file,new File(dest.getAbsolutePath()+"\\"+file.getName()));                               
  48.                                 }

  49.                                
  50.                         }
  51.        
  52.                 }

  53.         }

  54. //实现文件复制
  55.         private static void copyFile(File src, File dest) throws IOException{
  56.                
  57.                 BufferedReader bfr = new BufferedReader(new FileReader(src));

  58.                 BufferedWriter bfw = new BufferedWriter(new FileWriter(dest));

  59.                                 String str;
  60.                 while((str=bfr.readLine())!=null)
  61.                 {
  62.                         bfw.write(str);
  63.                 }
  64.                 bfr.close();
  65.                 bfw.flush();
  66.                 bfw.close();
  67.         }
  68. }
  69.                
复制代码


实现.java文件的复制(多级子目录)


作者: 当我遇上你    时间: 2015-1-14 14:41
实现整个文件夹复制功能呢
  1. package Test;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.FileReader;
  8. import java.io.FileWriter;
  9. import java.io.FilenameFilter;
  10. import java.io.IOException;
  11. import java.io.InputStreamReader;
  12. import java.io.OutputStreamWriter;

  13. public class Test2 {

  14.         public static void main(String[] args) throws IOException {
  15.                 File src = new File("D:\\A");
  16.                 File dest=new File("D:\\B");
  17.                
  18.                 copyDir(src,dest);
  19.         }
  20.        
  21.        
  22.         public static void copyDir(File src,File dest) throws IOException
  23.         {
  24.                 if(!dest.exists())
  25.                 {
  26.                         System.out.println("目录不存在,新建?");
  27.                         dest.mkdirs();
  28.                         File[] files=src.listFiles(/*new FilenameFilter() {
  29.                                
  30.                                 @Override
  31.                                 public boolean accept(File dir, String name) {
  32.                                         return name.endsWith(".java");

  33.                                 }
  34.                         }*/);
  35.                        
  36.                         for(File file:files)
  37.                         {
  38.                                 if(file.isDirectory())
  39.                                 {
  40.                                         copyDir(new File(file.getAbsolutePath()), new File(dest.getAbsolutePath()+"\\"+file.getName()) );
  41.                                 }
  42.                                 else
  43.                                 {
  44.                                         copyFile(new File(file.getAbsolutePath()),new File(dest.getAbsolutePath()+"\\"+file.getName()));
  45.                                 }
  46.                         }
  47.                        
  48.                        
  49.                        
  50.                        
  51.                 }
  52.         }


  53.         private static void copyFile(File src, File dest) throws IOException{

  54.                 BufferedReader bfr = new BufferedReader(new FileReader(src));
  55.                 BufferedWriter bfw = new BufferedWriter(new FileWriter(dest));
  56.                                 String str;
  57.                 while((str=bfr.readLine())!=null)
  58.                 {
  59.                         bfw.write(str);
  60.                 }
  61.                 bfr.close();
  62.                 bfw.flush();
  63.                 bfw.close();
  64.         }
  65.        
  66.        
  67.        
  68.        
  69.        
  70.        
  71. }
  72.                        


复制代码

作者: phil    时间: 2015-1-14 14:43
学习下,快到面试了。。
作者: 当我遇上你    时间: 2015-1-14 15:22
本帖最后由 当我遇上你 于 2015-1-14 20:37 编辑
  1. <div class="blockcode"><blockquote>package com.itheima;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileReader;
  6. import java.io.FileWriter;
  7. import java.io.FilenameFilter;
  8. import java.io.IOException;

  9. public class Copy2 {

  10.         public static void main(String[] args) throws IOException {
  11.                 File src = new File("D:\\A");
  12.                 File dest=new File("D:\\B");
  13.                
  14.                 copyDir(src,dest);
  15.                 changeName(dest);
  16.         }
  17.         
  18.         
  19.         private static void changeName(File dest) {
  20.                 File[] listFiles = dest.listFiles();
  21.                
  22.                 for(File listfile:listFiles)
  23.                 {
  24.                         
  25.                         if(listfile.isDirectory())
  26.                         {
  27.                                 changeName(listfile);
  28.                         }
  29.                         else
  30.                         {
  31. //                                listfile.getPath().replace(".java", ".txt");//不明白这样子为什么不行
  32. //                                System.out.println(listfile.getName());
  33.                                 listfile.renameTo(new File(listfile.getPath().replace(".java", ".txt")));
  34.                         }
  35.                         
  36.                         
  37.                 }
  38.         }


  39.         public static void copyDir(File src,File dest) throws IOException
  40.         {
  41.                 if(!dest.exists())
  42.                 {
  43.                         System.out.println("目录不存在,新建一个");
  44.                         dest.mkdirs();
  45.                 }
  46.                
  47.                 File[] files=src.listFiles(/*new FilenameFilter() {    //这里不能写过滤器,否则会直接滤掉子目录
  48.                                 
  49.                                 @Override
  50.                                 public boolean accept(File dir, String name) {
  51.                                         File currfile = new File(dir,name);
  52.                                         if(currfile.isFile()&&name.endsWith(".java"))
  53.                                         return true;
  54.                                         return false;

  55.                                 }
  56.                 }*/);


  57. //实现文件夹复制               
  58.                 for(File file:files)
  59.                 {
  60.                         if(file.isDirectory())
  61.                         {
  62.                                 copyDir(file, new File(dest.getAbsolutePath()+"\\"+file.getName()) );
  63.                         }
  64.                         else
  65.                         {
  66.                                 if(file.getName().endsWith(".java"))
  67.                                 {
  68.                                         copyFile(file,new File(dest.getAbsolutePath()+"\\"+file.getName()));

  69.                                 }

  70.                                 
  71.                         }
  72.         
  73.                 }

  74.         }

  75. //实现文件复制
  76.         private static void copyFile(File src, File dest) throws IOException{
  77.                
  78.                 BufferedReader bfr = new BufferedReader(new FileReader(src));

  79.                 BufferedWriter bfw = new BufferedWriter(new FileWriter(dest));

  80.                 String str;
  81.                 while((str=bfr.readLine())!=null)
  82.                 {
  83.                         bfw.write(str);
  84.                 }
  85.                 bfr.close();
  86.                 bfw.flush();
  87.                 bfw.close();
  88.         }
  89. }
  90.                
复制代码

package com.itheima;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;

public class Copy1 {

        public static void main(String[] args) throws IOException {
                File src = new File("D:\\A");
                File dest=new File("D:\\B");
               
                copyDir(src,dest);
        }
        
        
        public static void copyDir(File src,File dest) throws IOException
        {
                if(!dest.exists())
                {
                        System.out.println("目录不存在,新建一个");
                        dest.mkdirs();
                }
               
                File[] files=src.listFiles(/*new FilenameFilter() {    //这里不能写过滤器,否则会直接滤掉子目录
                                
                                @Override
                                public boolean accept(File dir, String name) {
                                        File currfile = new File(dir,name);
                                        if(currfile.isFile()&&name.endsWith(".java"))
                                        return true;
                                        return false;

                                }
                }*/);


//实现文件夹复制               
                for(File file:files)
                {
                        if(file.isDirectory())
                        {
                                copyDir(file, new File(dest.getAbsolutePath()+"\\"+file.getName()) );
                        }
                        else
                        {
                                if(file.getName().endsWith(".java"))
                                {
                                        copyFile(file,new File(dest.getAbsolutePath()+"\\"+file.getName()));                                
                                }

                                
                        }
        
                }

        }

//实现文件复制
        private static void copyFile(File src, File dest) throws IOException{
               
                BufferedReader bfr = new BufferedReader(new FileReader(src));

                BufferedWriter bfw = new BufferedWriter(new FileWriter(dest.getAbsolutePath().replace(".java", ".txt")));

                String str;
                while((str=bfr.readLine())!=null)
                {
                        bfw.write(str);
                }
                bfr.close();
                bfw.flush();
                bfw.close();
        }
}
               

1、在复制时把后缀改为.txt格式




2、实现复制后改后缀.txt:



作者: User    时间: 2015-1-14 16:30
感谢分享
作者: hahaer    时间: 2015-1-14 16:42
谢谢分享
作者: wangcongwu    时间: 2015-1-14 17:10
当我遇上你 发表于 2015-1-14 15:22
复制前改后缀名:

你做过实验吗,要是文件名叫做ABC.JAVA.JAVA你咋办。还有你复制文件夹的方法没有换行
作者: 当我遇上你    时间: 2015-1-14 17:18
wangcongwu 发表于 2015-1-14 17:10
你做过实验吗,要是文件名叫做ABC.JAVA.JAVA你咋办。还有你复制文件夹的方法没有换行 ...

换成getName(),还有其他问题,比如子目录中的就没有给复制出来,可惜不能删帖
作者: wangcongwu    时间: 2015-1-14 17:33
你可以在自己写的帖子上重新编辑,改过来就OK了
作者: 当我遇上你    时间: 2015-1-14 18:07
本帖最后由 当我遇上你 于 2015-1-14 18:27 编辑
wangcongwu 发表于 2015-1-14 17:33
你可以在自己写的帖子上重新编辑,改过来就OK了

请问子目录里边的.java没有复制出lai,如何实现?




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