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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


  1. import java.io.BufferedReader;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. /*
  8. * 思路:
  9. * 1,输入路径
  10. * 2,判断是否是存在以及是否是文件夹
  11. * 3,将文件夹传入copyDeom方法中
复制代码



评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 淡定

查看全部评分

9 个回复

倒序浏览
  1. package chart8;

  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8. /*
  9. * 思路:
  10. * 1,输入路径
  11. * 2,判断是否是存在以及是否是文件夹
  12. * 3,将文件夹传入copyDeom方法中
  13. * */
  14. public class JavaFileCopy
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.                 System.out.println("请输入需要复制的文件夹路径");
  19.                 BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
  20.                 String path = null;
  21.                 try
  22.                 {
  23.                         path = bufr.readLine();
  24.                 }
  25.                 catch (IOException e)
  26.                 {
  27.                         // TODO Auto-generated catch block
  28.                         e.printStackTrace();
  29.                 }
  30.                 File dir = new File(path);
  31.                 if((dir.exists()&&dir.isFile()))
  32.                 {
  33.                         System.out.println("路径不对");
  34.                 }
  35.                 copyAndRename(dir);
  36.                 System.out.println("复制成功");
  37.                
  38.         }
  39.         public static void copyAndRename(File dir)
  40.         {
  41.                 File[] files = dir.listFiles();
  42.                
  43.                 for(File file:files)
  44.                 {
  45.                         if(file.isDirectory())
  46.                         {
  47.                                 copyAndRename(file);
  48.                         }
  49.                         else
  50.                         {
  51.                                 /*File[] filess = file.listFiles(new FilenameFilter() {
  52.                                        
  53.                                         @Override
  54.                                         public boolean accept(File file, String name) {
  55.                                                 // TODO Auto-generated method stub
  56.                                                 return name.endsWith(".java");
  57.                                         }
  58.                                        
  59.                                 });
  60.                                 for(File file1 :filess)*/
  61.                                
  62.                                 //本想用过滤器,但是发现,过滤器用上了,总是空指针异常为啥呢?

  63.                                 if(file.getName().endsWith(".java"))
  64.                                 {
  65.                                        
  66.                                         File newDir = new File("D:\\IO8\\TEXT");
  67.                                         if(!(newDir.exists()))
  68.                                         {
  69.                                                 newDir.mkdirs();
  70.                                         }
  71.                                         String newName = file.getName().replaceAll(".java", ".txt");
  72.        
  73.                                         FileInputStream fis=new FileInputStream(file);
  74.                                         FileOutputStream fos = new FileOutputStream(new File(newDir,newName));
  75.                                                 byte[] buf = new byte[1024];
  76.                                                 int len = -1;
  77.                                                 while((len= fis.read(buf))!=-1)
  78.                                                 {
  79.                                                         fos.write(buf, 0, buf.length);
  80.                                                 }
  81.                                                 fis.close();
  82.                                                 fos.close();
  83.                                                
  84.                                
  85.                                 }
  86.                                
  87.                         }
  88.                 }
  89.                
  90. }
复制代码
回复 使用道具 举报
这是你面试的题吗
回复 使用道具 举报
刚刚的没有复制上么?不好意思!!!我想用过滤器,但是用不了,一用就空指针异常
回复 使用道具 举报

不是,我还没面。。嘿嘿。。。。你面完没?
回复 使用道具 举报
过滤器里面return语句加上 return new File(dir, name).isFile() && name.endsWith(".java");{:3_66:}应该是酱紫
回复 使用道具 举报
Imp_x 发表于 2015-1-16 22:36
过滤器里面return语句加上 return new File(dir, name).isFile() && name.endsWith(".java");应该 ...

貌似还是不太对,但是这句确实应该加上、:D 谢谢你啦
回复 使用道具 举报
那月 中级黑马 2015-1-17 22:47:14
8#
FilenameFilter使用方法错了
回复 使用道具 举报
那月 中级黑马 2015-1-17 22:53:14
9#
如果file.isDirectory()那就是文件夹 否则就是文件了 怎么从一个文件中得出一个File数组呢 所以file.listFiles报错
文件搭配FilenameFilter实例accept方法 文件夹搭配FilenameFilter 其他没看
回复 使用道具 举报
那月 发表于 2015-1-17 22:53
如果file.isDirectory()那就是文件夹 否则就是文件了 怎么从一个文件中得出一个File数组呢 所以file.listFi ...

恩恩。就是这个问题。有没有啥解决办法?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马