【问题标题】:Java isFile returns false even when file exists即使文件存在,Java isFile 也会返回 false
【发布时间】:2016-07-06 16:54:11
【问题描述】:

我在 Linux 上有一个文件:

[root@localhost ~]# touch /tmp/test.txt
[root@localhost ~]# ls -l /tmp/test.txt
-rw-r--r--. 1 root root 0 Jul  6 11:44 /tmp/test.txt

我有以下 Java 代码:

File f = new File("/tmp/test.txt");
System.out.print(f.isFile());

由于某种原因,输出总是错误的。这是为什么呢?

根据我的理解,该文件是一个普通文件,该目录是所有人都可以读取的。我不清楚为什么它返回 false。

【问题讨论】:

  • JVM 认为文件不正常
  • 尝试使用绝对路径访问文件。
  • 文件归 root 用户/组所有...您的 java 代码是否也以 root 身份运行?我不确定这是否会导致您面临的问题。
  • 您对File 所做的任何事情都将应用于客户端文件系统,而不是服务器的。

标签: java file-io


【解决方案1】:

当且仅当此抽象路径名表示的文件存在并且是普通文件时,否则为 false。

那么normal file 是什么? Java 应用程序创建的任何非目录文件都保证是普通文件或满足其他系统相关标准。

所以不要使用这个功能。你可以使用File.exists!File.isDirectory来实现这个功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 2015-05-26
    相关资源
    最近更新 更多