我正在尝试使以下代码正常工作。它始终打印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[]
包含来自网址的.jpg图片。总的来说,我试图从URL下载图像并将其保存到本地文件系统并返回路径。我认为这个问题与/home/
中的读/写权限有关。我选择在那里写文件因为我很懒,并且不想找到用户名来查找路径/home/USER/Documents
。我想我现在需要这样做。
我注意到在终端我可以cd ~
进入/home/USER/
。我可以在文件名中使用“路径快捷方式”,以便我可以在具有这些权限的文件夹中进行读/写吗?
答案 0 :(得分:4)
~exansion是shell的一个功能,对文件系统来说没什么特别之处。查找Java System Properties "user.home"
答案 1 :(得分:4)
没有。 ~
由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())
答案 2 :(得分:2)
Java提供System
属性来获取用户主目录:System.getProperty("user.home");
。
这样做的好处是,它适用于可以运行 Java虚拟机的每个操作系统。
有关System
属性的更多信息:Link。