`

java路径相关

    博客分类:
  • java
阅读更多
写作业的时候要输出一个record.dat文件到jar包的同级目录,但是不知道怎么定位jar包的路径。百度到的方法不很靠谱,所以在这里记录一下。

一:使用类路径

1 String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
或者

1 String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getFile();
因为程序已经被打包成jar包,所以getPath()和getFile()在这里的返回值是一样的。都是/xxx/xxx.jar这种形式。如果路径包含Unicode字符,还需要将路径转码

path = java.net.URLDecoder.decode(path, "UTF-8");
二:使用JVM

String path = System.getProperty("java.class.path");
利用了java运行时的系统属性来得到jar文件位置,也是/xxx/xxx.jar这种形式。



这样,我们就获得了jar包的位置,但是这还不够,我们需要的是jar包的目录。

使用

1 int firstIndex = path.lastIndexOf(System.getProperty("path.separator")) + 1;
2 int lastIndex = path.lastIndexOf(File.separator) + 1;
3 path = path.substring(firstIndex, lastIndex);
来得到目录。

path.separator在Windows系统下得到;(分号),在Linux下得到:(冒号)。也就是环境变量中常用来分割路径的两个符号,比如在Windows下我们经常设置环境变量PATH=xxxx\xxx;xxx\xxx;这里获得的就是这个分号。

File.separator则是/(斜杠)与\(反斜杠),Windows下是\(反斜杠),Linux下是/(斜杠)。

如何加载jar包中的资源。

1. 比如说我要得到背景图片,源代码中它是

/src/UI/image/background.jpg

那么在jar包中它的路径应该是

/UI/image/background.jpg

路径最前面的/表示根目录,即绝对路径,若没有最左边的/,则表示相对路径。使用哪种方法看自己的需求,这里使用了绝对路径。

加载的时候使用

1 java.net.URL fileURL = this.getClass().getResource("/UI/image/background.jpg");
2 javax.swing.Image backGround = new ImageIcon(fileURL).getImage();
即可以获得该图片资源。

2. 有时候,我们需要加载文本资源或音乐资源,而文本在Java中是以流对象存在的,这时我们就要使用

InputStream in = this.getClass().getResourceAsStream("/UI/image/background.txt");
加载该资源。



PS:注意这里两种方法的区别,第一种是先得到该文件的路径,再加载该文件资源。第二种则是直接加载该对象。



3.有时候,我们有一些资源类,其中的资源对象都是pulic static final修饰的,这里可以采用这样的方法初始化。

比如说我有一个ImageSource类用来加载各种图片资源,那么可以如下使用

复制代码
1 public class ImageSource
2 {
3     static
4     {
5         URL fileURL = ImageSource.class.getResource(“/UI/image/background.jpg”);
6         BACK_GROUND = new ImageIcon(fileURL).getImage();
7     }
8     public static final Image BACK_GROUND;
9 }
复制代码
这里不能用构造函数初始化,因为构造函数和对象相关,而static变量和对象是无关的,只和类相关。在Java的语法中,类中的static块是不依赖类对象的,因此可以初始化statc对象。同时,static块中不能使用this,这里使用了ImageSource.class代替。
分享到:
评论

相关推荐

    Java路径问题最终解决方案之一.

    ### Java路径问题最终解决方案之一 #### 一、引言与背景 在进行Java开发时,文件路径处理一直是令人头疼的问题之一。特别是在涉及跨平台或在不同环境中部署的应用程序时,路径问题更是频繁出现。本文旨在深入探讨...

    java路径解决方案

    本文将深入探讨Java路径解决方案,旨在帮助开发者理解和解决与此相关的各种问题。 首先,我们来了解一下Java中的类路径(Classpath)。类路径是Java虚拟机(JVM)寻找类文件的路径集合,它决定了哪些目录和.jar文件...

    java文件路径获取

    ### Java 文件路径获取方法详解 #### 一、引言 在Java开发中,经常会遇到需要获取文件路径的情况,尤其是在处理配置文件、图片等资源时。本文将详细介绍Java中获取文件路径的各种方法及其应用场景,帮助开发者更好...

    Java路径问题

    在Java编程中,路径问题是一个常见的挑战,尤其是在处理文件系统操作和类加载时。路径问题涉及到如何正确地指定和解析文件、目录以及类路径。本文将深入探讨Java中的路径问题,包括绝对路径、相对路径、类加载器路径...

    java 最短路径 问题 动态规划

    根据给定的信息,本文将详细解释Java实现的最短路径问题动态规划算法。该程序的主要目的是寻找图中各个节点到指定终点的最短路径,并输出每个节点到终点的最短距离以及达到这些最短距离时的决策路径。 ### 1. 问题...

    java 获取当前路径

    Java 获取当前路径 Java 获取当前路径是 Java 编程中一个常见的需求,下面我们将讨论如何在 Java 中获取当前路径。 方法一:使用 System.getProperty() 函数 使用 System.getProperty() 函数可以获取当前路径,该...

    JAVA获取各种路径总结

    ### JAVA 获取各种路径总结 在Java开发中,特别是在Web应用开发中,经常需要获取不同类型的路径,例如:当前Web应用的路径、特定文件的真实路径等。本文将详细讲解如何通过不同的方式来获取这些路径。 #### JSP中...

    java项目中获取路径详解

    Java 项目中获取路径详解 在 Java 项目中,获取路径是非常重要的,因为它关系到项目的正确运行。特别是在 Java Web 项目中,获取路径变得更加复杂。下面我们将详细讨论 Java 项目中获取路径的方法和注意事项。 ...

    java路径配置(win7)

    Java路径配置对于Windows 7用户来说是至关重要的步骤,尤其是对于初学者而言,因为这是运行和开发Java程序的基础。本文将详细解释如何正确配置Java环境变量,以确保系统能够识别并执行Java命令。 首先,我们需要...

    Java 解决中文路径问题

    - 使用`new File(String path)`构造File对象时,Java会尝试将路径字符串转换为平台相关的字节序列。如果路径包含非ASCII字符(如中文),可能需要手动进行编码转换。可以使用`URLEncoder.encode(path, "UTF-8")`先...

    JAVA中获取各种路径

    此方法返回类的资源路径,通常用于获取与类相关的资源文件,例如`/D:/TEST/WebRoot/WEB-INF/classes/pack/`,这在加载配置文件、模板等静态资源时非常有用。 #### (2) 获取工作目录路径:`System.getProperty("user...

    Floyd最短路径java实现

    运行上述Java程序并输出结果后,检查每个顶点对之间的最短路径是否正确。 总结,Floyd最短路径算法通过动态规划的思想,逐步增加中间节点,逐步完善最短路径信息。在Java中实现时,主要利用了二维数组来存储图的...

    java遗传算法寻找最优路径

    ### Java遗传算法寻找最优路径 #### 一、遗传算法概览 遗传算法(Genetic Algorithm, GA)是一种基于自然选择和遗传学原理的全局优化技术。它通过模拟自然界中的生物进化过程来解决优化问题,包括搜索空间较大的...

    Java路径问题最终解决方案之一.txt

    ### Java路径问题最终解决方案 #### 一、引言 在Java开发过程中,处理文件路径问题时常令人头痛。本文将深入探讨Java中的路径问题,并提供一个有效的解决方案,该方案旨在简化路径处理过程,使得开发者能够更加...

    java路径获得几种方法.txt

    ### Java路径获取方法详解 #### 一、概述 在Java编程中,经常需要处理文件路径问题,特别是当涉及到Web应用程序时。Java提供了多种方法来获取虚拟路径与物理路径,这对于文件操作至关重要。本文将详细介绍几种获取...

    java绝对路径和相对路径

    ### Java中的绝对路径与相对路径 在Java编程中,路径管理是进行文件操作的重要组成部分,尤其是在Web应用开发中。本文将详细介绍如何在Java中获取不同类型的路径,包括Web服务器下的文件路径、本地路径以及相对路径...

    java路径设置[借鉴].pdf

    Java路径设置对于软件开发至关重要,因为它确保了操作系统能够正确地找到并执行Java相关的程序和类。以下是关于JAVA_HOME、PATH和CLASSPATH这三个关键环境变量的详细说明。 **JAVA_HOME** JAVA_HOME环境变量指示的...

    java中获取路径

    java、servlet、jsp、class等等中如何获得所在的路径

    java中相对路径与绝对路径的问题

    "Java 中相对路径与绝对路径的问题" Java 中的路径问题一直是困扰许多编程人员的问题之一。在 Java 中,我们需要了解相对路径和绝对路径的概念,以及如何获取它们。下面我们将详细地讨论 Java 中的相对路径和绝对...

Global site tag (gtag.js) - Google Analytics