写文件到〜

时间:2014-11-10 21:20:31

标签: java linux file-io

我正在尝试使以下代码正常工作。它始终打印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/。我可以在文件名中使用“路径快捷方式”,以便我可以在具有这些权限的文件夹中进行读/写吗?

3 个答案:

答案 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