java - File.canExecute() 说每个文件都是可执行的?

标签 java 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错误?我使用的是 windows 7、netbeans 7.3.1 和 java 7。

最佳答案

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

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

关于java - File.canExecute() 说每个文件都是可执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154202/

相关文章:

eclipse-rcp - eclipse : Handlers' @CanExecute methods not called

mvvm - WPF MVVM 命令 CanExecute,仅在焦点更改时重新评估

c# - 如何在 WPF 上使用 ICommand 的 CanExecute 方法

java - 使用 pdfbox.jar 将 pdf 文件转换为文本文件时,出现以下错误。如何解决这些问题?

java - 在eclipse中动态编写.feature文件。

java - 在 java 中将 html 转换为 doc

java - 无法使用 Beem-Asmack 在 XMPP FileTransfer 中处理上传

c# - MVVM Light - RaiseCanExecuteChanged 用于 RelayCommand

java - 关于 CsrfPreventionFilter 的 tomcat 错误是什么意思?

wpf - 将可见性绑定(bind)到 ReactiveCommand CanExecute