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

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

不要用userdir,这个是根据你的运行环境改变的。

我也做过很多有upload的项目,都是用property文件定义一个绝对路径去存放上传的文件的。服务器端没有必要使用相对路径。

客户端的东西都使用相对路径,因为对于客户端来说,绝对路径是服务器的绝对路径,客户端是不能访问的。

所以,不知道你为什么要在服务器端使用相对路径,对于web开发来说,是没有意义的。

package compackage2;

import javaioFile;

public class T5 {

public static void main(String[] args) {

T test=new T();

testget();

}

}

class T

{

public void get()

{

File file = new File(thisgetClass()getResource("/")getPath());

Systemoutprintln(filetoString());

}

}

单独的Java程序包, 需要通过命令java -jar或java -cp的方式启动;

我们可以在启动命令中加入系统运行时变量, 在log4j加载配置文件之前通过SystemgetProperties(“path”)读取此变量, 即可实现灵活加载当前路径

(1) 启动脚本设置:

假设当前项目的目录结构为:

/Projects/KafkaConsumer

丨 bin 项目的启动脚本

丨 conf 项目的配置文件

丨 lib 项目的其他依赖包

丨 bogs 项目的日志输出路径

启动脚本位于bin目录下, 内容示例如下:

# 获取当前脚本所处的目录, 然后进入其上级目录, 最后pwd输出该目录, 最终的结果是/Project/KafkaConsumerbase_dir=$(cd `dirname $0`; cd ; pwd)# 获取Java运行程序的位置, 并指定主类java_bin=$(which java)main_class=”orgshoufengelasticConsumerMain”# 通过-cp、扩展CLASSPATH、指定主类的方式启动项目, # 并通过“-D”的方式向此程序的运行时环境中设置当前项目的路径,# 即可在程序中通过SystemgetProperty(“basedir”)获取此路径 nohup ${java_bin} -Dbasedir=${base_dir} -cp ${CLASSPATH}:${base_dir}/conf:${base_dir}/lib/ ${main_class} >> /dev/null &

(2) Java程序读取变量:

实log4j的FileAppender本身支持动态设置文件路径, 如:

log4jappenderlogfileFile=${baselog}/logs/applog

其中“${baselog}”是一个变量, 会被System Property中的baselog的值代替, 代码中的使用方式为:

public static void main(String[] args) { // 获取系统运行时变量中的日志文件的输出路径 // 此变量需要在启动命令中通过-D的方式设置 String baseDir = SystemgetProperty(“b

java d出选择目录框(选择文件夹),获取选择的文件夹路径:

int result = 0;

File file = null;

String path = null;

JFileChooser fileChooser = new JFileChooser();

FileSystemView fsv = FileSystemViewgetFileSystemView(); //注意了,这里重要的一句

Systemoutprintln(fsvgetHomeDirectory()); //得到桌面路径

fileChoosersetCurrentDirectory(fsvgetHomeDirectory());

fileChoosersetDialogTitle("请选择要上传的文件");

fileChoosersetApproveButtonText("确定");

fileChoosersetFileSelectionMode(JFileChooserFILES_ONLY);

result = fileChoosershowOpenDialog(chatFrame);

if (JFileChooserAPPROVE_OPTION == result) {

path=fileChoosergetSelectedFile()getPath();

Systemoutprintln("path: "+path);

}

这是另外一种方法得到桌面路径:

File desktop = new File(SystemgetProperty("userhome")+SystemgetProperty("fileseparator")+"XX");

filechoosersetCurrentDirectory(desktop);

我的文档 路径: fsvgetDefaultDirectory());

username 用户的账户名称

userhome 用户的主目录

userdir 用户的当前工作目录

javaversion Java 运行时环境版本

javavendor Java 运行时环境供应商

javavendorurl Java 供应商的 URL

javahome Java 安装目录

javavmspecificationversion Java 虚拟机规范版本

javavmspecificationvendor Java 虚拟机规范供应商

javavmspecificationname Java 虚拟机规范名称

javavmversion Java 虚拟机实现版本

javavmvendor Java 虚拟机实现供应商

javavmname Java 虚拟机实现名称

javaspecificationversion Java 运行时环境规范版本

javaspecificationvendor Java 运行时环境规范供应商

javaspecificationname Java 运行时环境规范名称

javaclassversion Java 类格式版本号

javaclasspath Java 类路径

javalibrarypath 加载库时搜索的路径列表

javaiotmpdir 默认的临时文件路径

javacompiler 要使用的 JIT 编译器的名称

javaextdirs 一个或多个扩展目录的路径

osname *** 作系统的名称

osarch *** 作系统的架构

osversion *** 作系统的版本

java获取根路径有两种方式:

1),在servlet可以用一下方法取得:

requestgetRealPath(“/”) 例如:filepach = requestgetRealPath(“/”) ”//upload//”;

2),不从jsp,或servlet中获取,只从普通java类中获取:

String path =

getClass()getProtectionDomain()getCodeSource()getLocation()getPath();

SAXReader() saxReader = new SAXReader();

if(pathindexOf(“WEB-INF”)>0){

path = pathsubstring(0,pathindexOf(“/WEB-INF/classes”) 16);

// ‘/WEB-INF/classes’为16位

document = saxReaderread(path filename);

}else{

document = saxReaderread(getClass()getResourceAsStream(filename));

}

weblogic tomcat 下都有效

String path =

getClass()getProtectionDomain()getCodeSource()getLocation()getPath();

<!--EndFragment-->

可以通过“ 类名classgetResource("")getPath()”方法实现。

举例:”String path = XMLSclassgetResource("")getPath()“

解释:以上语句就是获取到XMLS编译后的绝对路径(无法获取到java文件路径的,因为java运行的都是class文件)

以上就是关于Java 获取相对路径问题 System.getProperty("user.dir");全部的内容,包括:Java 获取相对路径问题 System.getProperty("user.dir");、eclipse编写java时如何获得当前文件路径、java指定日志配置路径命令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9325888.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存