黑马程序员技术交流社区

标题: 求助 file问题 [打印本页]

作者: 盛亚昆    时间: 2012-3-30 00:03
标题: 求助 file问题
import java.io.*;

class File
{

       
        public static void main(String[] args)
                {
               
                File dir= new File("d:\\java0217");
                showDir( dir);
                }
        public static void showDir(File dir)
                {
                File[] files = dir.listFiles();
               
                for (int x=0;x<files.length;x++)
                        {
                        System.out.println(files[x]);
                        }
                }
}
错误::::高手指点啊
File.java:10: 找不到符号
符号: 构造函数 File(java.lang.String)
位置: 类 File
                File dir= new File("d:\\java0217");
                          ^
File.java:15: 找不到符号
符号: 方法 listFiles()
位置: 类 File
                File[] files = dir.listFiles();
                                  ^
作者: 张明星    时间: 2012-3-30 00:21
自定义的类File和io包中的类File冲突了,换个类名试试
作者: 何万县    时间: 2012-3-30 00:26
类名写错了!!!!!!类名不能是关键字!把File改成File1就行了!
作者: 肖发腾    时间: 2012-3-30 00:27
哥们,File是类,你类的名字定义成了File,换成其它的名字即可了,例如MyFile。测试通过,没有你出现的问题,还有对文件的处理最好加上异常处理哦。。。{:soso_e100:}
作者: 何万县    时间: 2012-3-30 00:28
低级错误谁都犯过,我看了老半天都没看出毛病。看了类名才恍然大悟!下次就住就好了~~~
作者: 盛亚昆    时间: 2012-3-30 00:28
谢谢 指点
作者: 丁佼    时间: 2012-3-30 00:39
本帖最后由 丁佼 于 2012-3-30 00:45 编辑

你的类名和IO包里的File类重名了,貌似是建立对象时直接使用了你建立的类的构造函数,因为你定义的类没有接收字符串的构造函数,所以报告File类里“找不到符号”为 File(java.lang.String)的构造函数;
注意这里的dir引用是建立成功了的,类型就是你写的File类,只是没有具体指向对象,之后因为你写的File类里没有listFiles方法,所以又报告File类里“找不到符号”为listFiles的()方法

测试代码,无错编译通过。。
========================================
  1. import java.io.*;

  2. class File
  3. {
  4.         File(String str){}                                   
  5.         /*建立String参数的构造函数*/

  6.         File[] listFiles(){  return new File[0];  }         
  7.          /*建立返回值类型为File[]的listFiles方法。里面的内容我直接新建了一个File数组就返回了,只是为了格式要求,没有任何意义的。*/

  8.         public static void main(String[] args)
  9.           {            
  10.                 File dir= new File("d:\\java0217");
  11.                 showDir( dir);
  12.           }
  13.         public static void showDir(File dir)
  14.           {
  15.                 File[] files = dir.listFiles();
  16.                
  17.                 for (int x=0;x<files.length;x++)
  18.                    {
  19.                         System.out.println(files[x]);
  20.                   } }
  21. }
复制代码

作者: 郑洋洋    时间: 2012-3-30 13:07
类File已经被sun公司封装过了
作者: newlaw2013    时间: 2012-3-30 13:26
虽然是低级的错误但一定要分析出正确的原因,这个地方出错的直接原因是自己书写的File类和java.io.File下的同名了,因为你的这个类文件中import了 java.io.*,在这种情况下如果还想继续使用自己的类名,则在引用系统的类的时候就要加上类的全名了,即带上包路径加于区分。在实际的编程中会遇到这样的情况,只需要用类的全名引用即可。
修正后的代码如下:
class File {

        public static void main(String[] args) {

                java.io.File dir = new java.io.File("d:\\java0217");
                showDir(dir);
        }
        public static void showDir(java.io.File dir) {
                java.io.File[] files = dir.listFiles();

                for (int x = 0; x < files.length; x++) {
                        System.out.println(files[x]);
                }
        }
}




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