写一个文件到〜

我试图让下面的代码正常工作。 它始终打印catch块的输出,即使打印输出只在文件存在的情况下打印。

String outputFile = "/home/picImg.jpg"; File outFile = new File(outputFile); if(outFile.exists) newStatus(" File does indeed exist"); FileOutputStream fos; try { fos = new FileOutputStream(outFile); fos.write(response); fos.close(); return outputFile; } catch (FileNotFoundException ex) { newStatus("Error: Couldn't find local picture!"); return null; } 

在代码response是一个byte[]包含来自URL的.jpg图像。 总的来说,我试图从URL下载一个图像,并将其保存到本地文件系统并返回path。 我认为这个问题与/home/内的读/写权限有关。 我select在那里写文件,因为我很懒,不想find用户名findpath/home/USER/Documents 。 我想我现在需要这样做。

我注意到在terminal我可以做cd ~/home/USER/ 。 是否有一个“path快捷方式”,我可以在文件名中使用,以便我可以在具有这些权限的文件夹中读/写?

不,这个~是由shell扩展的。 在Java File.exists()是一种方法,你可以使用File.separatorChar ,你可以得到一个用户的家庭文件夹与System属性"user.home"一样

 String outputFile = System.getProperty("user.home") + File.separatorChar + "picImg.jpg"; File outFile = new File(outputFile); if (outFile.exists()) 

编辑

另外,正如下面的@StephenP注释,你也可以使用File(File parent, String child)来构造File

 File outFile = new File(System.getProperty("user.home"), "picImg.jpg"); if (outFile.exists()) 

〜扩展是你的shell的一个功能,对文件系统没有什么特别的意义。 寻找Java系统属性 "user.home"

Java提供了一个System属性来获取用户主目录: System.getProperty("user.home"); 。 这样做的好处是,它适用于每个可以运行Java虚拟机的操作系统。

更多关于System属性: 链接 。