永发信息网

Java 获取相对路径问题 System.getProperty("user.dir");

答案:4  悬赏:70  手机版
解决时间 2021-03-05 21:02
  • 提问者网友:原来太熟悉了会陌生
  • 2021-03-05 13:52
最近碰到一个让我头疼的问题。是这样的我在上传文件的时候需要把文件传到WebContent底下的upload文件夹。我的后台接收的类放在了src/UploadResource底下。
我想用相对路径把文件传到upload文件夹下面。现在问题来了。我该怎样得到路径项目名/WebContent/upload这个相对路径呢。
我试了一下:
System.getProperty("user.dir");
这是我的测试函数:import java.util.Date;

import com.kmproject.downloadresource.model.Model;
import com.kmproject.downloadresource.po.Book;
public class Test {
public static void main(String[] args) {
String path=System.getProperty("user.dir");
path=path+"\\WebContent\\upload\\";
System.out.println(path);
}
}
结果是:
D:\JAVA\Hellios\IDENewWorkSpace\KmProject\WebContent\upload\
其实这就是我要的答案,但是。这是右击此程序选择run as application的结果。假如我把这句话:
String path=System.getProperty("user.dir");
path=path+"\\WebContent\\upload\\";
放到后台的类里面后结果竟然变成了:
D:\JAVA\Hellios\eclipse-jee-helios-win32\eclipse\WebContent\upload\
(D:\JAVA\Hellios\eclipse-jee-helios-win32\是我Eclipse的安装路径)

也就是说我在run as application 的时候得到的是项目所在的路径,也是我要的。但是在run as server 的时候的变成了eclipse的安装路径了。
我想在运行的是后也得到项目的路径D:\JAVA\Hellios\IDENewWorkSpace\KmProject\WebContent\upload\
各位大侠,有知道如何去做的吗?
最佳答案
  • 五星知识达人网友:掌灯师
  • 2021-03-05 15:12
不要用user.dir,这是用户的根目录。
也不要在application下测试web下的东西。
类似于这么写:
String uploadPath = getContext().getServletContext().getRealPath(
"/")
+ File.separator + "upload" + File.separator;
全部回答
  • 1楼网友:蓝房子
  • 2021-03-05 17:26
system.getproperty("user.dir"); 这是说得到当前项目文件的根目录! 这是绝对路径.... 你想知道什么?你要问什么问题?
  • 2楼网友:患得患失的劫
  • 2021-03-05 16:54
这是因为run as application和run as server的路径不同,你所写的路径都是以他们俩的路径为相对路径的。run as application是编译以后.class文件所在路径为相对路径,而run as server的路径是在tomcat(估计你服务器就是它吧)的www路径下。
  • 3楼网友:洎扰庸人
  • 2021-03-05 15:44
不要用user.dir,这个是根据你的运行环境改变的。 我也做过很多有upload的项目,都是用property文件定义一个绝对路径去存放上传的文件的。服务器端没有必要使用相对路径。 客户端的东西都使用相对路径,因为对于客户端来说,绝对路径是服务器的绝对路径,客户端是不能访问的。 所以,不知道你为什么要在服务器端使用相对路径,对于web开发来说,是没有意义的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯