黑马程序员技术交流社区

标题: 碰到个问题,求大神 [打印本页]

作者: 何伟    时间: 2013-1-13 22:54
标题: 碰到个问题,求大神
  1. package homework;

  2. import java.io.BufferedWriter;
  3. import java.io.File;
  4. import java.io.FileWriter;
  5. import java.io.IOException;

  6. public class CopyJavaTest
  7. {
  8.         public static void main(String[] args) throws IOException
  9.         {
  10.            //把一个目录下的所有.java结尾的文件路径存储到一个文件中,方便查找
  11.           //D:\\useradmin
  12.          //封装目录
  13.          File file = new File("D:\\useradmin");
  14.                          //获取指定目录下的所有文件               
  15.                         filePathList(file);
  16. }
  17.        
  18.         public static void filePathList(File file)
  19.         {
  20.                 File[] fileArray = file.listFiles();
  21.                 BufferedWriter bw = null;
  22.                 //遍历得到每一个File对象
  23.                 for(File f : fileArray)
  24.                 {
  25.                         //判断File是否是文件
  26.                         if(f.isFile())//第一次判断
  27.                         {                //判断File是否是以.java结尾的文件
  28.                                 if(f.getAbsolutePath().endsWith(".java"))//第二次判断
  29.                                 {
  30.                                         try {
  31.                                                 //创建流对象
  32.                                                 bw = new BufferedWriter(new FileWriter("CopyJavaTest.txt",true));                                               
  33.                                                 //把.java文件名写入CopyJavaTest.txt
  34.                                                 bw.write(f.getAbsolutePath());
  35.                                                 //换行
  36.                                                 bw.newLine();
  37.                                                 //刷新
  38.                                                 bw.flush();
  39.                                        
  40.                                         } catch (IOException e)
  41.                                         {
  42.                                                 e.printStackTrace();
  43.                                         }
  44.                                         finally
  45.                                         {
  46.                                                 //判断流对象在抛异常前是否创建成功
  47.                                                 if(bw != null)
  48.                                                 {
  49.                                                         try
  50.                                                         {
  51.                                                                 bw.close();
  52.                                                         } catch (IOException e)
  53.                                                         {
  54.                                                                 e.printStackTrace();
  55.                                                         }
  56.                                                 }
  57.                                         }
  58.                                 }
  59.                         }else
  60.                         {
  61.                                 //如果是文件夹就递归
  62.                                 filePathList(f);
  63.                         }
  64.                 }
  65.         }
  66. }
复制代码
为什么上面代码的分两次判断可以,写为一个判断就出错了
if(f.isFile())//第一次判断
if(f.getAbsolutePath().endsWith(".java"))//第二次判断
为什么这样写就出错?
if(f.isFile && f.getAbsolutePath().endsWith(".java"))

错误显示如下:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method filePathList(File, File[]) in the type CopyJavaTest is not applicable for the arguments (File)

作者: 黄锦成    时间: 2013-1-14 00:34
逻辑出错了。你想一下,如果一个图片,按照if的条件来判断,它显然为false,为false的话,就会去执行else里的,此时它是一个图片,你把它当做一个目录来进行遍历操作,就会出现问题
作者: 舒远    时间: 2013-1-14 09:06
文件类型过滤可以用FileFilter类。建议查一下文档学习使用FileFilter
作者: 何伟    时间: 2013-1-14 22:37
黄锦成 发表于 2013-1-14 00:34
逻辑出错了。你想一下,如果一个图片,按照if的条件来判断,它显然为false,为false的话,就会去执行else里 ...

感谢啊!你说的对的
我子啊价格
else  if()

else就可以了

作者: 黄锦成    时间: 2013-1-15 21:15
何伟 发表于 2013-1-14 22:37
感谢啊!你说的对的
我子啊价格
else  if()

可以先在if判断是否是目录,其他的进入else里面判断
作者: just_nnnnx    时间: 2013-12-28 08:42
好像isFile后面漏了()。。。




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