FileOutputStream() 可以采用相对路径作为参数吗

发布于 2024-08-28 03:08:04 字数 297 浏览 5 评论 0原文

我正在创建一个 FileOutputStream 对象。它在其构造函数中接受文件或字符串作为参数。

我的问题是,我可以给它一个相对 URL 作为文件位置的参数吗?它似乎不起作用,但我正在尝试弄清楚这是否可能(如果不可能,我将停止尝试) 。

如果不可能,我如何(从 servlet)获取当前位置的绝对路径(在文件系统上,而不是逻辑 URL),以便将其传递给构造函数。

我的部分问题是我的开发盒是 Windows,但我会将其发布到 Unix 盒,因此路径不能相同,即在 Windows C:/.... 和 unix /usr/... 上

I am creating a FileOutputStream object. It takes a file or String as an argument in its constructor.

My question is, can I give it a relative URL as an argument for the location of a file, it doesn't seem to work, but I am trying to work out if this is possible at all (if not I will stop trying).

If it is not possible, how can I (from a servlet) get the absolute path (on the filesystem, not the logical URL) to the current location in such a way that I can pass that to the constructor.

Part of my problem is that my dev box is Windows but I will publish this to a Unix box, so the paths cannot be the same i.e. on Windows C:/.... and on unix /usr/...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦毁影碎の 2024-09-04 03:08:04

这应该适用于相对路径,但要注意当前目录是什么。例如,如果您使用 Eclipse,则当前目录是项目目录(而不是包含类的目录)。

That should work with a relative path, yet be careful about what the current directory is. For instance if you are using Eclipse the current directory is the project directory (and not the directory containing the classes).

太阳公公是暖光 2024-09-04 03:08:04

来自文件 javadoc:

相反,相对路径名必须根据从其他路径名获取的信息进行解释。默认情况下,java.io 包中的类始终根据当前用户目录解析相对路径名。该目录由系统属性 user.dir 命名,通常是调用 Java 虚拟机的目录。

编辑:
Bozho 是对的,我没有读到这是一个 servlet。我尊重他的回答:

ServletContext.getRealPath(relativePath)

From the File javadoc:

A relative pathname, in contrast, must be interpreted in terms of information taken from some other pathname. By default the classes in the java.io package always resolve relative pathnames against the current user directory. This directory is named by the system property user.dir, and is typically the directory in which the Java virtual machine was invoked.

EDIT:
Bozho is right, I didn't read that this was a servlet. I defer to his answer:

ServletContext.getRealPath(relativePath)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文