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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

想用文件名过滤器,但是一用就空指针异常。不知道为什么?请假一下大神

  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. }
复制代码

2 个回复

倒序浏览
过滤器中,如果目录是空,返回值就是空。
返回值是空,遍历时候应该会出现空指针异常吧。
回复 使用道具 举报
vermouth 发表于 2015-1-16 16:43
过滤器中,如果目录是空,返回值就是空。
返回值是空,遍历时候应该会出现空指针异常吧。 ...

恩恩。好像是判断是否是目录之后else都是文件了,所以不能过滤到File[]中。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马