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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜桂发 黑马帝   /  2012-4-1 22:05  /  1277 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜桂发 于 2012-4-2 02:28 编辑

package cn.mysoft.test;

import java.io.File;

public class Test {

       
        public static void main(String[] args) {
                String path ="E:\\back\\MyDrivers ";
                File file = new File(path);
                if(file.isFile()){
                        System.out.println("这是文件!");
                }else if(file.isDirectory()){
                        System.out.println("这是目录!");
                        File [] files = file.listFiles();
                        System.out.println("length="+files.length);
                        for(File f : files){
                                if(f.isFile()){
                                        System.out.println("又是文件");
                                }else if(f.isDirectory()){
                                        System.out.println("又是目录");
                                }else{
                                        System.out.println("你是什么啊?"+f.getPath());
                                }}}}}

程序不走isFile(),也不走isDirectory(),只走else,已确保传入的File[] files是有效的.大家知道是什么原因吗?求助ing.........
输出的结果:
这是目录!
length=6
你是什么啊?E:\back\MyDrivers \backup
你是什么啊?E:\back\MyDrivers \desktop.ini
你是什么啊?E:\back\MyDrivers \hotfix
你是什么啊?E:\back\MyDrivers \icon.ico
你是什么啊?E:\back\MyDrivers \software
你是什么啊?E:\back\MyDrivers \update
真是超级郁闷!!!程序走了else的语句,但在这个语句里又可以使用File类的各种方法.

问题解决了,伤不起,弄了三小时,原来路径最后面多了一个空格!!!!!!!!

6 个回复

倒序浏览
局部变量重名了吧
for(File file1 : files)下面也改下应该没问题吧
回复 使用道具 举报
不是这个原因...
回复 使用道具 举报
那就路径下没有文件也没目录,就走else喽
回复 使用道具 举报
file对象的实例化,首先调用exists()方法来要判断这个实体文件是否存在指定目录里。
如果实体文件都不存在,你在对file对象进行一系列的判断都返回false。

再执行以下判断时,首先调用exists()判断实体文件是否存在,如果文件不存在以下方法都返回false。

        boolean isDirectory();        //判断是否为目录
        boolean isFile();        //判断是否为文件
        boolean isAbsolute();        //是否为绝对目录
        boolean canExecute();   //是否为可执行文件
        boolean isHidden();     //隐藏文件
回复 使用道具 举报
为了回答你的问题,我可是很认真的哦。运行了你的程序,尽然运行不了,好是郁闷了一会,修改了一下才可以运行。现在回答你的问题吧:为什么直接就跳到else,就是因为路径下没有目录和文件。我运行过了,是的哦
回复 使用道具 举报
path 多个空格吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马