如何找到使用FileOutputStream创建的文件的路径

9
我使用FileOutputStream创建了一个文件,它是一个Excel文件(使用HSSF库)。
FileOutputStream fileOut = new FileOutputStream(text+".xls");

然后我在Excel文件(工作簿)中写下我需要的内容,然后关闭文件。

workbook.write(fileOut);
fileOut.flush();
fileOut.close();

关闭文件后,我需要向用户显示文件的路径(我知道它创建在我的应用程序文件夹中,但我仍然需要向用户显示,可能通过joption/message box)。我尝试了以下代码:
String absolutePath = fileOut.getAbsolutePath();
JOptionPane.showMessageDialog(null, absolutePath);

但是它显示错误并且说找不到方法“getAbsolutePath”。我该怎么办?有没有办法可以获取这个路径?


在关闭fileOut对象之前,您尝试过获取fileOut.getAbsolutePath()吗? - Yassin Hajaj
1
新建一个文件(text+".xls"),然后你就可以使用File的所有属性,比如getAbsolutePath - MadProgrammer
@YassinHH 是的,不幸的是它有相同的错误。 - Hirad Gorgoroth
2
@YassinHH 我99.9%确定FileOutputStream没有名为getAbsolutePath的方法,正如OP的错误所示:“找不到该方法”。 - MadProgrammer
@MadProgrammer,我知道它可以使用文件,因为我在应用程序的其他部分中使用了它。然而,HSSF库需要使用FileOutputStream创建文件。 - Hirad Gorgoroth
那么?FileOutputStream也可以使用File作为引用来写入。FileOuputStream会写入您告诉它的任何地方,现在是{user.dir}/{text}.xls(或当前工作目录)。 - MadProgrammer
2个回答

14

您可以将代码更改为使用文件作为中间件。

File myFile = new File(text + ".xls");
FileOutputStream fileOut = new FileOutputStream(myFile);

然后只需获取该路径:

String absolutePath = myFile.getAbsolutePath();

完成时请确保关闭流:

fileOut.close();

理想情况下,您不应该只是在设置了Java路径的任何位置创建文件。您应该重新考虑这一点,并询问用户他们希望将文件保存在哪里。

非常感谢,现在可以用了。这已经是你第二次通过你惊人的答案帮助我了 :D - Hirad Gorgoroth
我已经添加了选择路径的功能,但是无论如何我仍然需要显示它。再次感谢。 - Hirad Gorgoroth

2
使用new File(text+".xls").getAbsolutePath()。FileOutputStream不允许访问底层文件。
你应该养成阅读javadoc的习惯,而不是随意尝试方法。这样你就可以看到存在哪些方法和不存在哪些方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接