我试图让下面的代码正常工作。 它始终打印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
属性: 链接 。