java中获取工程中res目录路径的方法

java中获取工程中res目录路径的方法,第1张

第一种:

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

Systemoutprintln(f);

结果:

C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin

获取当前类的所在工程路径;

如果不加“/”

File f = new File(thisgetClass()getResource("")getPath());

Systemoutprintln(f);

结果:

C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin\com\test

获取当前类的绝对路径;

第二种:

File directory = new File("");//参数为空

String courseFile = directorygetCanonicalPath() ;

Systemoutprintln(courseFile);

结果:

C:\Documents and Settings\Administrator\workspace\projectName

获取当前类的所在工程路径;

第三种:

URL xmlpath = thisgetClass()getClassLoader()getResource("selectedtxt");

Systemoutprintln(xmlpath);

结果:

file:/C:/Documents%20and%20Settings/Administrator/workspace/projectName/bin/selectedtxt

获取当前工程src目录下selectedtxt文件的路径

第四种:

Systemoutprintln(SystemgetProperty("userdir"));

结果:

C:\Documents and Settings\Administrator\workspace\projectName

获取当前工程路径

第五种:

Systemoutprintln( SystemgetProperty("javaclasspath"));

结果:

C:\Documents and Settings\Administrator\workspace\projectName\bin

获取当前工程路径

PthisBackgroundImage = (Image)Resourcesskin名

这种方法不行,resources中不支持下面的文件夹直接读取,

PropertiesResources名 这样是允许的

否则的话,可以用这种方法(只是其中一种)

SystemReflectionAssembly asm = SystemReflectionAssemblyGetExecutingAssembly();

Stream resource = asmGetManifestResourceStream(路径);

thisBackgroundImage=BitmapFromStream(resource);

thisgetClass()getResource是得到当前对象对应的类文件(class)所在的目录下的文件。所以通过thisgetClass()getResource去获得C盘中的数据是获取不到的。

像C:\\loginwav这样的绝对路劲,你可以这样来获取:

URL url = new File("C:\\loginwav")toURI()toURL();

补充:

这个要看你的Pan这个类编译成的class文件在什么地方。thisgetClass()getResource()是相对于Panclass这个类文件的文件来说的,如果loginwav和Panclass同一目录下,那么thisgetClass()getResource("loginwav")就能获取到,如果loginwav是在Panclass的下一级目录music下,那么就是

thisgetClass()getResource("music/loginwav")了。

像这样的根据ClassLoader来获取资源的方式,应该不能查找上一级目录。如:

thisgetClass()getResource("/aa");这样好像是不行的。所以如果要取相对路径,那么要么就把loginwav和Panclass文件放在同一目录,要么就把loginwav放在Panclass的下一级目录。

如果还有什么不清楚,可以再说出来。我再补充。

在目前的微服务和容器部署的SpringBoot坏境下,我们一般将项目直接打成 jar包的方式运行(java -jar ),我们可能需要读取resources目录下的自定义文件,想在程序运行时找到该目录,并读取需要的文件。

当时我使用 SystemgetProperty("userdir") 获取工作目录的坑,本地idea工具运行没问题,但是一但打成jar包,路径会变成jar包所在的目录,无法读取jar内部的文件, 不建议用这种方式

由于jar中的文件都属于资源的一种,所以获取需从类加载器进行获取。正确的姿势是采用 thisgetClass()getClassLoader()getResourceAsStream() 的方式。

读取自定义文件时,由于getResourceAsStream方法返回的是一个InputStream流,采用InputStreamReader这种方式 最好指定一种编码方式 ,不然可能 中文乱码 !(我在解析xml时中文乱码)

从getResource()中是可以获取resource中的对象的,比如的Bitmap对象,定义dimen的数值等。

而Rdimen或Rmipmap等仅仅是获取了资源id,接下来还需要经过getDrawbleResource()这类方法底层去创建对象和或许数值的。

方法有

dim strExe as string=程序文件所在的完整路径(Filename)

processstart(strExe,"默认程序可以不写")

processstart("C:\qqexe")

以上就是关于java中获取工程中res目录路径的方法全部的内容,包括:java中获取工程中res目录路径的方法、c# winform 下 Resources下面有个子文件夹skin怎么读取里面的图片、JAVA中获取资源问题 this.getClass().getResource("C:\\login.wav");等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9410914.html

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

发表评论

登录后才能评论

评论列表(0条)

保存