我用如下方式访问一个文件夹出现问题:
System.out.println(new FileInputStream(new File("E:\\文件夹名").listFiles()[1]).available());
错误信息:Exception in thread "main" java.io.FileNotFoundException: E:\文件夹名 (拒绝访问。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at action.TestAction.main(TestAction.java:72)注:这种方式是从网上搜到的,网上普遍这样写的,是不是我的问题?

解决方案 »

  1.   

    PPS:我访问的是本地的文件夹。换成其他的比如:D盘也不行。
      

  2.   

    getClass().getResource("/image/1.png")
      

  3.   

    研究文件相关知识 
    这里就全 你可以去看看
    http://www.blogjava.net/i369/articles/182041.html
      

  4.   

    谢谢aidetianshi2009,你误会了,我这不是个web应用,我是想想从eclipse控制台查看指定目录的大小。
    也谢谢HeiBoyYang,依然没有找到我想要的方法,那个空间很牛,但里面没有提到怎么访问文件夹和得到文件夹的大小。
      

  5.   

    你不能用一个代表文件夹的File去创建一个FileInputStreamnew File("E:\\文件夹名").listFiles()[1]代表E:\\文件夹名文件夹下的第2个文件或文件夹,如果它是文件夹,就会抛出异常,如果它是文件,就没问题。总的来说,你不事先判断listFiles()[1]是文件还是文件夹就用来创建FileInputStream不是稳妥的做法
      

  6.   

    非常感谢alexandertech,我确实忘了这点,请问有没有办法得到一个文件夹占用了多少磁盘空间呢?
      

  7.   

    谢谢大家的帮助,可以获得文件夹的大小了,但又出现一个新问题让我好笑:
    我用这个方法得到一个文件夹的大小:
    /**
     * 递归调用,获取一个目标文件夹的大小
     * @param file
     * @return
     */
    public long calcDirectorySize(File file){
    long directorySize=0L;
    File[] files=file.listFiles();
    for(int i=0;i<files.length;i++){
    if(files[i].isDirectory()){
    directorySize+=calcDirectorySize(files[i]);
    }else{
    directorySize+=files[i].length();
    }
    }
    return directorySize;
    }
    但一遇到中文名的文件夹就挂了,抛出空指针异常。请问有没有办法解决啊?
      

  8.   

    按照你的代码测试了一下,进中文没有问题的哦。就是进入文件夹System Volume Information时会报异常。应该是文件夹权限的问题。