File.canExecute()表示每个文件都是可执行的



我正在使用此代码对其进行测试;

public class CanExecuteTest {
    public static void main (String[] args) {
        File currentDir = new File(System.getProperty("user.dir"));
        traverse(currentDir);
    }
    public static void traverse(File dir) {
        String[] filesAndDirs = dir.list();
        for (String fileOrDir : filesAndDirs) {
            File f = new File(dir, fileOrDir);
            if (f.isDirectory()) {
                traverse(f);
            } else {
                System.out.print(f);
                if (f.canExecute()) {
                    System.out.println(" can execute");
                } else {
                    System.out.println(" cannot execute");
                }
            }
        }
    }
}

这会输出每个文件都是一个可执行文件。我是做错了什么,还是这是一个java错误?我使用的是windows7、netbeans7.3.1和java7。

canExecute()不测试可执行性,它测试当前程序(即您的程序)是否被允许执行。例如,如果您将其中一个文件的权限更改为000(任何用户都不能读取、写入或执行),canExecute()可能会返回false,因为JVM将没有执行(或读取)该文件的权限。

如果你想检查可执行文件,你可能会创建一个方法来解析文件的后缀,并在找到.exe(或OSX上的.app)时返回true。

相关内容

  • 没有找到相关文章

最新更新