黑马程序员技术交流社区

标题: 刚刚没发上代码。关于文件名过滤器的问题。一用就空指针异常 [打印本页]

作者: 温晓慧    时间: 2015-1-16 17:03
标题: 刚刚没发上代码。关于文件名过滤器的问题。一用就空指针异常
将java的文件改成txt然后复制到制定目录下
  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. }
复制代码

作者: xiaoyi    时间: 2015-1-16 17:17
我也不知道,刚学问io,看了你的代码相当于复习了一下
作者: xiaomin1992    时间: 2015-1-16 20:37
过来看看
作者: bluebloodant    时间: 2015-1-16 20:56
帮顶一下
作者: fluency    时间: 2015-1-17 13:24
本帖最后由 fluency 于 2015-1-17 13:30 编辑

总之listFiles是给目录列文件的 本身是文件了用了listFile结果也是个Null

作者: fluency    时间: 2015-1-17 13:26
怎么没有金马币 我的技术分啊
作者: 温晓慧    时间: 2015-1-17 19:40
fluency 发表于 2015-1-17 13:24
总之listFiles是给目录列文件的 本身是文件了用了listFile结果也是个Null

大神。。太牛气了!!!!!!我一直纠结在for循环是不是不能更改文件上。原来是这里!!!!!!!
作者: fluency    时间: 2015-1-17 20:59
温晓慧 发表于 2015-1-17 19:40
大神。。太牛气了!!!!!!我一直纠结在for循环是不是不能更改文件上。原来是这里!!!!!!! ...

嘿嘿客气客气




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