java中文件路径分为关于绝对路径和相对路径,下面简要总结下常用获取文件路径的方法:
测试环境:
elipse: 3.6.2 Helios Service Release 2
JDK:1.7.0_17
测试代码path:/minaTest/src/cn/mina/demo/JavaPathTest.java
测试代码location:D:\JavaEE\workspace\minaTest\src\cn\mina\demo\JavaPathTest.java
1.通过File文件系统:
File directory = new File("");//参数为空
String courseFile = directory.getCanonicalPath() ;
System.out.println(courseFile);
结果:
D:\JavaEE\workspace\minaTest
2.通过class文件获取class path路径 :
File f = new File(JavaPathTest.class.getClass().getResource("/").getPath());
System.out.println(f);
结果:
D:\JavaEE\workspace\minaTest\bin
注:File f = new File(this.getClass().getResource("").getPath()); 会导致空指针异常。
3.通过ClassLoader文件获取class path路径 :
String path=ClassLoader.getSystemResource("selected.txt").getFile();
System.out.println(path);
结果: /D:/JavaEE/workspace/minaTest/bin/selected.txt获取当前工程src目录下selected.txt文件的路径
注:System.out.println( JavaPathTest.class.getClass().getClassLoader().getResource("selected.txt"));
会出现NPE异常。
4.通过系统属性user.dir:
String path=System.getProperty("user.dir");
System.out.println(path);
结果: D:\JavaEE\workspace\minaTest获取当前工程路径
5.通过系统属性java.class.path:
String path=System.getProperty("java.class.path");
System.out.println(path);
结果:
D:\JavaEE\workspace\minaTest\bin;D:\JavaEE\workspace\minaTest\lib\mina-core-2.0.7.jar;D:\JavaEE\workspace\minaTest\lib\slf4j-api-1.7.6.jar;D:\JavaEE\workspace\minaTest\lib\slf4j-simple-1.7.6.jar获取当前工程相关class路径
6.获取jar包父目录路径
public static void main(String[] args) {
String path=getPath();
System.out.println(path);
}
public static String getPath() {
URL url = JavaPathTest.class.getProtectionDomain().getCodeSource().getLocation();
String filePath = null;
try {
filePath = URLDecoder.decode(url.getPath(), "utf-8");// 转化为utf-8编码
} catch (Exception e) {
e.printStackTrace();
}
if (filePath.endsWith(".jar")) {// 可执行jar包运行的结果里包含".jar"
// 截取路径中的jar包名
filePath = filePath.substring(0, filePath.lastIndexOf("/") + 1);
}
File file = new File(filePath);
// /If this abstract pathname is already absolute, then the pathname
// string is simply returned as if by the getPath method. If this
// abstract pathname is the empty abstract pathname then the pathname
// string of the current user directory, which is named by the system
// property user.dir, is returned.
filePath = file.getAbsolutePath();//得到windows下的正确路径
return filePath;
}
结果:
在class方式中,显示bin路径:D:\JavaEE\workspace\minaTest\bin
在jar运行方式中,显示jar所在的路径(测试中jar包位置D:\jtest\pathTest.jar):D:\jtest
注:该方式在程序被打成jar包后,获取程序相关配置文件时相当有用,该方式是通过自测的、获取jar位置的唯一方式(可能有其他更加简单方式吧,但目前没找到)。
分享到:
相关推荐
4. 小结 在 JAVA 文件中获取项目的相对路径非常重要,特别是在 JSP/Servlet 中。通过了解绝对路径和相对路径的概念,我们可以更好地获取当前应用的相对路径和绝对路径,从而更好地处理文件和目录的操作。
JAVA IO流小结 JAVA IO流是指Java语言中用来实现输入/输出操作的机制。IO流是指任何有能力产出数据的数据源对象或者有能力接收数据的数据源对象。他屏蔽了实际的I/O设备处理数据的细节。 一、流的定义和分类 流是...
### Java语言基础小结 #### 一、JDK, JRE, JVM的关系 - **JVM(Java Virtual Machine)**:Java虚拟机是Java程序跨平台运行的核心,它负责执行Java字节码(.class文件),确保Java程序可以在不同的平台上运行而...
【文件(File)小结】 在Java编程中,文件(File)是数据持久化存储的重要方式,它不同于内存中临时存储的数据。File类是Java.io包中的核心类,提供了对文件和目录的操作。通过File对象,我们可以进行创建、删除、...
### Java个人学习小结 #### Java发展史及重要里程碑 - **起源与发展**: Java 的起源可以追溯到 1992 年,当时的 Sun Microsystems 公司开发了一种名为 Oak 的编程语言,最初是为了家用电器的智能化而设计的。然而...
### Java基础知识小结 #### 1.1 `getPath()`、`getAbsolutePath()`、`getCanonicalPath()`的区别 在Java中,处理文件路径时经常会用到`getPath()`、`getAbsolutePath()`以及`getCanonicalPath()`这三个方法。它们...
- **用途**:通过Java标准库提供的方法来拼接文件路径。 - **示例**: ```java File file = new File("path/to/file"); String canonicalPath = file.getCanonicalPath(); // 获取规范化路径 String classPath...
##### 2.3 小结 为了确保引用的文件属于Web应用中的目录,并且避免因文件移动而导致的问题,最好在JSP/HTML页面中引用的CSS、JavaScript、Action等属性前加上应用的根目录路径。 #### 三、获取当前应用的相对路径...
* 文件操作需要注意文件路径和文件名,需要使用双斜杠 `\\` 分隔目录。 * 文件打开方式可以选择 `ios::in`、`ios::out`、`ios::app` 等方式。 * 文件操作完毕后,需要关闭文件使用 `close` 函数。 小结 本文介绍了...
Java 中的 Resource 路径是指程序中使用的各类资源文件的路径,如图片、配置文件、数据文件等。正确地使用 Resource 路径可以确保程序的正确运行和移植性,而错误的使用则可能导致程序崩溃或不可移植。 Java 中的...
### Java技巧小结荟萃 #### Javadoc API 文件产生器 Javadoc 是一款非常重要的工具,主要用于生成文档,能够从源代码注释中提取出有用的文档信息。这不仅有助于提高代码的可读性,还方便其他开发人员快速理解类、...
本文将结合标题“文件读写操作小结”和提供的标签“源码”、“工具”,深入探讨文件读写的核心概念、常见方法以及在实际应用中的注意事项。 1. 文件系统基础 文件系统是操作系统用于组织和管理磁盘上数据的一种方式...
#### 四、小结 对于Java初学者而言,熟悉并掌握上述提到的关键技术和工具至关重要。通过系统地学习JDK、深入理解JDK文档、熟练操作常用的应用服务器,可以为成为一名合格的Java开发者打下坚实的基础。此外,持续...
// 要传输的文件路径 try (Socket socket = new Socket(serverAddress, port); FileInputStream fileInputStream = new FileInputStream(filePath); OutputStream outputStream = socket.getOutputStream()) { ...
【Java试题小结】 1. **Applet生命周期与方法**: - 在Java中,Applet的生命周期包括初始化、启动、绘画、停止和销毁几个阶段。`init()`方法用于初始化Applet所需资源,`paint()`方法负责在屏幕上绘制图形,如线条...
其中`<path_to_libs>`和`<path_to_classes_and_libs>`应替换为实际的目录路径或包含库的jar文件路径。 #### 小结 在Java命令行编译和运行过程中,理解并正确处理包、类的相对路径以及`classpath`的设置,对于构建...
### Java文件操作详细介绍 #### 一、File类 **File类简介** `File`类是Java中用于处理文件和目录的基本工具。虽然它并不直接涉及数据的读写操作,但它是进行文件操作不可或缺的一部分,提供了丰富的API来获取文件...
小结 Path的主要功能是设置JDK的可执行命令 classpath主要是在执行时候起作用,告诉JVM类的保存路径,一般设置成“.” 【注意】classpath只在java命令的时候起作用,而对于javac不起任何作用 2.简单JAVA程序 使用...