我的Java服务器的相对路径

时间:2013-04-15 20:43:45

标签: java directory relative-path

我正在尝试在服务器中创建一个文件。我发送了一个图像,我想在我的服务器的文件夹中创建该图像,但是具有相对路径。

String filePath = "C:\\Users\\Administrador\\Desktop\\Proyecto\\clienteServidor\\Server\\folder\\image.jpg";
File imageFile = new File(filePath);
...

我正在做绝对路径。

由于

2 个答案:

答案 0 :(得分:0)

对目录进行硬编码很少有利于编码。如果您的代码中存在拼写错误会发生什么。使用././*

的组合

甚至使用

new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());

这解释为here

答案 1 :(得分:-1)

这是可行的,但正如德米特里所说,它可能无法在每台服务器上运行。如果您的webapp有权写入该文件夹,则应咨询SecurityManager类。或者你会得到一个例外。

一种方法是通过ServletContext

URL webAppRoot = this.getServletConfig().getServletContext()
    .getResource("/images/new-image.jpg");

这将指向您的${tomcat}/webapps/mywebapp/images/new-image.jpg

另一种方式是通过ProtectionDomain

URL runningClassLocation = this.getClass().getProtectionDomain()
    .getCodeSource().getLocation();

但这很可能会给你jar:file://...myapp.jar!/my/package/servlet.class

获得网址后,将其转换为File并附加图片文件夹的相对路径。

<强>更新 我同意吉姆的观点,并强调这样做只是出于学术目的。 Java与PHP不同,因此您不应在Web应用程序的文件夹中包含uploads文件夹。通常,这是通过允许管理员级用户指定为应用程序的存储需求保留的文件夹的文件路径来完成的。