Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
方法File.isDirectory()在Java中不起作用_Java_File - Fatal编程技术网

方法File.isDirectory()在Java中不起作用

方法File.isDirectory()在Java中不起作用,java,file,Java,File,此处forfolder2.isDirectory()返回true,但folder.isDirectory()返回false 我的输出: Folder2是一个目录。 有没有办法解决这个问题?我能想到的唯一解释是你有一个同形文字问题;i、 这两个字符串文字看起来相同,但实际上并不相同 参考: 当然。。。也可能是您在编译代码时遇到了问题,并且您实际上没有运行与您正在查看的源代码相对应的代码。我猜您在其中一个文件名中有一个零宽度的空格(Unicode字符0x200B)。尝试重新键入它们,而不是从其

此处for
folder2.isDirectory()
返回true,但
folder.isDirectory()
返回false

我的输出:
Folder2是一个目录。


有没有办法解决这个问题?

我能想到的唯一解释是你有一个同形文字问题;i、 这两个字符串文字看起来相同,但实际上并不相同

参考:


当然。。。也可能是您在编译代码时遇到了问题,并且您实际上没有运行与您正在查看的源代码相对应的代码。

我猜您在其中一个文件名中有一个零宽度的空格(Unicode字符0x200B)。尝试重新键入它们,而不是从其他地方复制和粘贴它们

这是一个SSCCE,我使用
javac-encoding utf-8 FileTest.java编译它:

String baseDirectory = "F:\\Studies";

File folder = new File(baseDirectory);
if (folder.isDirectory()) {
    System.out.println("Folder is  a Directory");
}

File folder2 = new File("F:\\Studies");
if (folder2.isDirectory()) {
    System.out.println("Folder2 is a Directory");
}
当我运行它时,我得到的唯一输出是
Folder2是一个目录

原因是我在
baseDirectory
的值中插入了一个零宽度的空格。因为它是一个零宽度的空间,所以你看不到它。但是,如果我在Notepad++中打开该类并将编码更改为ANSI(encoding>Encode in ANSI),则出现问题的行如下所示:

import java.io.File;

public class FileTest {
    public static void main(String[] args) throws Exception {
        String baseDirectory = "C:\\Users\\Lu​ke";
        File folder = new File(baseDirectory);

        if(folder.isDirectory())
        {
            System.out.println("Folder is  a Directory");
        }

        File folder2 = new File("C:\\Users\\Luke");

        if(folder2.isDirectory())
        {
            System.out.println("Folder2 is a Directory");
        }
    }
}

它总是不适合我。尝试搜索字符串结尾以查找
,如果是,则它是文件。@sailator这是我所见过的几乎毫无用处的注释。@sailator它始终与我一起工作。@DineshJ的可能重复项您能将您的代码简化为一个完整的、自包含的程序来产生问题吗?计算机上真的存在F:\研究吗?它实际上是一个文件还是目录?F:\\Studies-我找不到任何可能的方法来解决这个字符串的同形符问题。。而且我没有打两次。。我只是做了一个复制粘贴。在这种情况下,问题一定是你正在运行的代码与你的源代码不匹配。实际上,您还没有向我们展示真正的源代码。您向我们展示的代码不是一个完整的类。不……在这种情况下,我将无法从第二条if语句中获得输出,这是否适用于您?你能粘贴代码和你的输出吗..你发布的代码是不可编译的。请看@DineshJ-1)你的论点有缺陷。如果您正在执行的代码与您正在查看的源代码不匹配,那么您不知道它在做什么。2) 不,我现在不经营温多兹。此外,正如邓尼指出的,您的代码是不可编译的。如果您需要更多帮助,请发布SSCCE。。。
        String baseDirectory = "C:\\Users\\Lu​ke";