黑马程序员技术交流社区

标题: file方法报错,请兄弟们帮忙看看 [打印本页]

作者: ぺsimon☆    时间: 2013-3-6 10:57
标题: file方法报错,请兄弟们帮忙看看
代码如下:
import java.io.*;
class ch1
{
        public static void main(String[] args)
        {
        BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("请输入任何一个路径");
        String a=buf.readLine();
        File path=new File("buf");
        if(path.isDirectory())
        {
        System.out.println(path.getName()+"为一个目录");
        System.out.println("----------------");
        File FileList[]=path.listFiles();

        for(int i=0;i<FileList.length();i++)
        {
        if(FileList[i].isHidden()==false)
        {
        System.out.println(FileList[i].getName());
        }
        }
        }
       
        else
        {
        System.out.println(path.getName()+"是一个文件");
        System.out.println("----------------");
        System.out.println("其绝对路径是"+path.getAbsolutePath());
        System.out.println(path.canRead()?"可读取":"不可读取");
        System.out.println(path.canWrite()?"可写":"不可写");
        System.out.println(path.isHidden()?"这是隐藏文件":"不是隐藏文件");
        }
}
}


报错如下:
E:\Java\jdk1.4.2\create\file>javac ch1.java
ch1.java:16: cannot resolve symbol
symbol  : method length ()
location: class java.io.File[]
        for(int i=0;i<FileList.length();i++)
                              ^
1 error
作者: 卢浩    时间: 2013-3-6 11:40
目测 应该是这样的  数组中的长度是数组本身的属性 所以不是用FileList.length()  改成FileList.length
作者: ぺsimon☆    时间: 2013-3-6 12:47
本帖最后由 ぺsimon☆ 于 2013-3-6 13:02 编辑
林明华 发表于 2013-3-6 11:07
帮你把错误的地方更正过来了,你在看看
  public static void main(String[] args) throws Exception//抛下 ...


按照上面程序修改后,可以运行了,但是运行结果是这样:
E:\Java\jdk1.4.2\create\file>java ch1
请输入任何一个路径
E:\Java\jdk1.4.2\create
----------------
其绝对路径是E:\Java\jdk1.4.2\create\file\Path
不可读取
不可写
不是隐藏文件

我输入的路径是E:\Java\jdk1.4.2\create\file
但是绝对路径变成了E:\Java\jdk1.4.2\create\file\Path
无论我输入什么东西他的绝对路径都会是E:\Java\jdk1.4.2\create\file\Path
并且for循环也不执行
而且file是一个目录不是一个文件,为什么for循环的语句没有读呢?
作者: 谢洋    时间: 2013-3-6 12:56
路径格式错了:E:\\Java\\jdk1.4.2\\
作者: ぺsimon☆    时间: 2013-3-6 13:03
谢洋 发表于 2013-3-6 12:56
路径格式错了:E:\\Java\\jdk1.4.2\\

加多了一个反斜杠好像不行
作者: 克零岚    时间: 2013-3-6 13:45
哥们,要仔细检查代码哟
你的代码如下:

import java.io.*;
class ch1
{
        public static void main(String[] args)
        {
        BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("请输入任何一个路径");
        String a=buf.readLine();
        File path=new File(a);        
//File类的构造方法中的参数是文件路径字符串哟,是a!而且,用File(String pathName)形式来创建一个File实例对象,pathName参数是文件路径字符串,
if(path.isDirectory())                                                         //并且要包括文件名称,比如:E:\create\ww.txt,当然了,或许你后边还有判断呢,就是执行for语句呗
        {
        System.out.println(path.getName()+"为一个目录");
        System.out.println("----------------");
        File FileList[]=path.listFiles();

        for(int i=0;i<FileList.length();i++)
        {
        if(FileList.isHidden()==false)
        {
        System.out.println(FileList.getName());
        }
        }
        }
        
        else
        {
        System.out.println(path.getName()+"是一个文件");
        System.out.println("----------------");
        System.out.println("其绝对路径是"+path.getAbsolutePath());
        System.out.println(path.canRead()?"可读取":"不可读取");
        System.out.println(path.canWrite()?"可写":"不可写");
        System.out.println(path.isHidden()?"这是隐藏文件":"不是隐藏文件");
        }
}
}
总的来说,就是你的所有错都源于这两行代码: String a=buf.readLine();       File path=new File("buf");
以上就是改正后代码,我也执行试了试,结果正确!




作者: ぺsimon☆    时间: 2013-3-6 14:57
林明华 发表于 2013-3-6 13:24
你是不是哪一处漏改了?我这边运行正常啊。。

我代码是按照上面修改了,程序也没有报错,但是运行结果就是不对,我怀疑是不是环境变量设置不对呢?
环境变量如下:
classpath:E:\Java\jdk1.4.2\create\file

类ch1放在:E:\Java\jdk1.4.2\create\file

我在控制台上直接编译就有这样的错误,虚拟机不自动找这个类,但是我classpath上面已经把路径给出来了
C:\Documents and Settings\123>javac ch1.java
error: cannot read: ch1.java
1 error


如果我在控制台上面直接进去这个路径E:\>cd E:\Java\jdk1.4.2\create\file编译
就能找到这个类了,效果如下:

E:\Java\jdk1.4.2\create\file>javac ch1.java

E:\Java\jdk1.4.2\create\file>java ch1
请输入任何一个路径
c:\Temp
a是一个文件
----------------
其绝对路径是E:\Java\jdk1.4.2\create\file\a
不可读取
不可写
不是隐藏文件

作者: ぺsimon☆    时间: 2013-3-6 14:58
ぺsimon☆ 发表于 2013-3-6 14:57
我代码是按照上面修改了,程序也没有报错,但是运行结果就是不对,我怀疑是不是环境变量设置不对呢?
环 ...

兄弟你好,我那两处代码都修改了,但是程序运行结果不对了




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