Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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
Java Mac创建新文件(路径)-使用德语umlauts的路径_Java_Macos_Filesystems - Fatal编程技术网

Java Mac创建新文件(路径)-使用德语umlauts的路径

Java Mac创建新文件(路径)-使用德语umlauts的路径,java,macos,filesystems,Java,Macos,Filesystems,实际上,我正在尝试创建一个具有特定文件名的文件。问题是,文件名包含德语umlauts,因此我总是会得到一个NullPointerException 代码如下所示: File f = new File("/Volume/dir1/dir2/dirWithUmlauts"); File[] files = f.listFiles(); // NullPointerException 我在Windows上进行了同样的测试,效果很好。我不知道为什么它不能在Mac上运行。我不知道Mac操作系统将如何处理

实际上,我正在尝试创建一个具有特定文件名的文件。问题是,文件名包含德语umlauts,因此我总是会得到一个
NullPointerException

代码如下所示:

File f = new File("/Volume/dir1/dir2/dirWithUmlauts");
File[] files = f.listFiles(); // NullPointerException

我在Windows上进行了同样的测试,效果很好。我不知道为什么它不能在Mac上运行。

我不知道Mac操作系统将如何处理文件系统中的UMLAUT。但是,如果目录可以在JVM之外正确处理,那么它也必须在JVM中工作

因此,请尝试通过
listFiles()
上一级列出目录的名称:

File d = new File("/Volume/dir1/dir2/"); 
for( File f : d.listFiles()) System.out.println(f.getName());
因此,您将看到打开文件时字符串的外观(它确实存在并且可以从VM访问)


解决方案:


您说您正在尝试创建一个文件,但您的代码列出了目录的内容。您是否(无意中)列出了文件的“文件夹内容”?根据:“如果这个抽象路径名不表示目录,那么这个方法返回null。”


因此,如我所怀疑的,如果您试图列出非目录的内容,那么您的File[]数组是
null
。因此,当您尝试使用它时,您的代码将在将来以NPE爆炸

,您可能希望在问题标题或描述中指定“OS X”。这会让你想要的更明显。我现在要深入阅读这个问题。我觉得这很好。你能给我们追踪吗?您确定路径正确吗?由
new
运算符创建变量后,无法获取
NPE
!100%不为空的是哪个版本的
java
?NPE是否可能发生在下一行,大概是在您访问
文件
变量的地方?如果是这样的话,请看下面我的更新答案,因为提问者没有提到任何关于虚拟机的内容,所以我假设您指的是JVM。如果这是正确的,你可能想编辑你的文章,这样说,以避免混淆。除此之外,回答得不错@user2048767这是关于Java1.6的,但我认为它也会帮助您;)@RussellUhl谢谢你的提示,对我来说这很清楚(你不应该有另一个VM,而不是JVM:P)。。。谢谢;)非常感谢你。有帮助。@user2048767如果答案是正确的,请接受helpful@MarvinEmilBrach这并不是我想要的,但也可能是。我的意思是,他试图查看目录的内容,但目录是一个实际的文件。我不知道java将如何处理这样的事件。:如果此抽象路径名不表示目录,则返回null。。。尽管如此:llya是正确的,代码有点乱七八糟(在IDE中或就在这里)@MarvinEmilBrach:仔细阅读。我的论点只有在他试图使用他创建的File[]数组时才适用,而“directory”实际上不是一个目录。我误解了你的代码列出内容,以为你指的是listFiles()命令