我实际上是在尝试创建一个具有特定文件名的文件。问题是,文件名包含德语变音符号,所以我总是得到NullPointerException
。
代码如下所示:
File f = new File("/Volume/dir1/dir2/dirWithUmlauts");
File[] files = f.listFiles(); // NullPointerException
我在Windows上测试过相同的功能。我不知道为什么它在Mac上不起作用。
答案 0 :(得分:0)
我不知道Mac OS将如何处理文件系统中的变音符号。但是如果目录可以从JVM中正确处理,它也必须在它中工作。
因此,请尝试通过以上listFiles()
级别列出目录名称:
File d = new File("/Volume/dir1/dir2/");
for( File f : d.listFiles()) System.out.println(f.getName());
因此,您将看到String打开文件时的样子(也确实存在并可从VM访问);
<强> SOLUTION:强>
File.listFiles() mangles unicode names with JDK 6 (Unicode Normalization issues)
答案 1 :(得分:0)
您说您正在尝试创建文件,但您的代码列出了目录的内容。您(无意中)列出了文件的“文件夹内容”吗?根据{{3}}:“如果此抽象路径名不表示目录,则此方法返回null。”
因此,如果我怀疑您正在尝试列出非目录的内容,那么您的File []数组将为null
。因此,当您尝试使用它时,您的代码将以NPE爆炸