`
mj4d
  • 浏览: 302643 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 读取文件相对路径

    博客分类:
  • java
 
阅读更多

最近遇到在java代码中读取自带文件,只知道可以采用getResourceAsStream,但对具体细节了解不甚详细,在网上查阅了相关资料,对各种情况做了一些汇总,mark一下。


以下是需要读取文件的各种场景:

  • 文件和java文件的相对位置,各个properties文件

 

  • 同时,在依赖的第三方包中还有文件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

现在需要读取各个properties文件

 

测试代码

我们在TestPath.java中读取各个文件,主要采用

Class.getResourceAsStream(String path) 

Class.getClassLoader().getResourceAsStream(path)

 

两种方式,测试代码如下:

	/**
	 * Class.getResourceAsStream
	 * 
	 * @param path
	 *            各个文件的路径
	 */
	public static void getResourceAsStream(String path) {
		InputStream input = TestPath.class.getResourceAsStream(path);
		showPath(input);
	}
	
	/**
	 * Class.ClassLoader.getResourceAsStream
	 * 
	 * @param path
	 *            各个文件的路径
	 */
	public static void classLoadGetResourceAsStream(String path){
		InputStream input = TestPath.class.getClassLoader().getResourceAsStream(path);
		showPath(input);
	}

	/**
	 * print content in per file
	 * @param input
	 */
	public static void showPath(InputStream input) {
		Properties prop = new Properties();

		if (null == input) {
			throw new RuntimeException("can not load properties: " + input);
		}

		try {
			prop.load(input);
			input.close();
			for (Entry<Object, Object> entry : prop.entrySet()) {
				System.out.println(entry.getKey().toString() + "="
						+ entry.getValue().toString());
			}

		} catch (IOException e) {
			throw new RuntimeException("can not read properties: " + input);
		}
	}

 

 

两种方式和文件路径的具体写法

 

  • 在TestPath.java中采用Class.getResourceAsStream()

 

	public static void testGetResourceAsStream() {
		System.out.println("文件与当前class在同一目录");
		getResourceAsStream("current_path.properties");
		getResourceAsStream("/com/java/path/test/current_path.properties");

		System.out.println("文件在当前class上级目录");
		getResourceAsStream("../parent_path.properties");
		getResourceAsStream("/com/java/path/parent_path.properties");

		System.out.println("文件与当前class在不同的package");
		getResourceAsStream("/com/java/pathanother/another_package.properties");

		System.out.println("文件在class根目录");
		getResourceAsStream("/root_path.properties");
		
		System.out.println("文件位于的依赖第三方包");
		getResourceAsStream("/META-INF/maven/commons-logging/commons-logging/pom.properties");
	}
 

输出:

文件与当前class在同一目录
path=com.java.path.test
path=com.java.path.test

文件在当前class上级目录
path=com.java.path
path=com.java.path

文件与当前class在不同的package
path=com.java.pathanother

文件在class根目录
path=toot

文件位于的依赖第三方包
version=1.1.1
groupId=commons-logging
artifactId=commons-logging
 

 

  • 采用Class.ClassLoader.getResourceAsStream
	public static void testClassLoadGetResourceAsStream() {
		System.out.println("文件与当前class在同一目录");
		classLoadGetResourceAsStream("com/java/path/test/current_path.properties");

		System.out.println("文件在当前class上级目录");
		classLoadGetResourceAsStream("com/java/path/parent_path.properties");

		System.out.println("文件与当前class在不同的package");
		classLoadGetResourceAsStream("com/java/pathanother/another_package.properties");

		System.out.println("文件在class根目录");
		classLoadGetResourceAsStream("root_path.properties");
		
		System.out.println("文件位于的依赖第三方包");
		classLoadGetResourceAsStream("META-INF/maven/commons-logging/commons-logging/pom.properties");
	}
 

 

输出:

文件与当前class在同一目录
path=com.java.path.test

文件在当前class上级目录
path=com.java.path

文件与当前class在不同的package
path=com.java.pathanother

文件在class根目录
path=toot

文件位于的依赖第三方包
version=1.1.1
groupId=commons-logging
artifactId=commons-logging
 
分享到:
评论

相关推荐

    关于java 读取eclipse下文件相对路径 关于Java的文件相对路径问题一直 ....doc

    如果你想要从这个Java文件读取`yyy.properties`,假设它位于`src\env`目录,那么正确的相对路径应该是`./src/env/yyy.properties`。这里,`.`代表当前目录,也就是`src\come\home\basic`,然后你向这个目录添加相对...

    java中File的相对路径与绝对路径总结

    在Java中,处理文件时通常会遇到两种类型的路径:**相对路径**与**绝对路径**。 - **相对路径**:指的是相对于当前工作目录或类路径(Classpath)的一种路径表示方式。 - **绝对路径**:则是一种完整地指明文件位置...

    java文件路径获取

    2. 使用`Class.getResourceAsStream`(相对路径): ```java InputStream inputStream = Test.class.getResourceAsStream("abc.jpg"); ``` 3. 使用`ClassLoader.getResourceAsStream`: ```java InputStream ...

    java Web 中相对路径绝对路径问题总结

    在Java Web开发中,理解和掌握相对路径与绝对路径的运用是至关重要的,因为这直接影响到资源定位、页面跳转以及文件读写等操作的正确性。以下是对Java Web中相对路径与绝对路径问题的深入总结: ### 一、路径概念与...

    Java相对路径总结

    本文将深入探讨Java中的相对路径,这是在处理文件和目录时经常会遇到的一个关键主题。相对路径是相对于当前工作目录或某个已知起点的文件或目录的路径表示方式,与绝对路径(完整描述文件或目录位置的路径)相比,...

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    1. 相对类路径:如果你的Properties文件与Java源代码位于同一目录结构下,可以使用`getResourceAsStream()`方法,配合类路径来加载。例如: ```java InputStream in = getClass().getResourceAsStream("/config....

    java读取项目中的文件(src目录下)

    - 在Java中读取文件时,可以使用相对路径或绝对路径。如果文件在`src`目录下,且你的代码在同一目录层次,可以使用相对路径。否则,可能需要使用绝对路径,或者利用类路径的特性。 5. **使用`ClassLoader`读取资源...

    Java文件路径详解

    该方法有两个参数,第一个参数是文件的相对路径,第二个参数是 Class 对象。相对路径可以是相对于当前类所在的包的路径,也可以是绝对路径。如果路径以 "/" 开头,则表示绝对路径,否则表示相对路径。 例如,...

    java项目中获取路径详解

    在 Java 项目中,获取相对路径可以使用 `getResource` 方法。这个方法可以返回当前类的相对路径。在静态方法中,可以使用 `Test.class.getResource("").getPath()`,而在非静态方法中,可以使用 `this.getClass()....

    文件写入,项目相对路径,java反射,模板数据写入

    本项目涉及的关键知识点主要包括文件写入、项目相对路径、Java反射以及模板数据写入。这些技术都是构建复杂应用时不可或缺的部分。 首先,我们要了解文件写入。在Java中,我们可以使用`java.io`包下的`FileWriter`...

    JAVA中获取各种路径

    这对于构建相对路径或在不同的应用之间共享资源时非常有用。 #### (3) 获取当前页面的目录全名:`request.getServletPath()` 此方法返回请求的Servlet路径,即`http://example.com/TEST/jsp/test.jsp`中的`/jsp/...

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    解决这个问题的方法是确保路径的正确性,可以使用绝对路径或者相对路径,并且检查文件是否真的存在于该路径下。 接下来,我们讨论写入Properties文件的问题。写入过程基本如下: 1. 创建Properties对象(如果还...

    java文件路径操作详细(转载)

    Java文件路径操作是Java开发中常见且重要的任务,无论是在读写文件、处理资源还是进行系统交互时,都需要对文件路径进行操作。本篇将详细探讨Java中的文件路径处理技术,主要涵盖以下知识点: 1. **File类**: ...

    java 读取资源文件

    本文将深入探讨如何使用Java读取资源文件,特别是properties类型的文件。 资源文件通常存储在项目的类路径(classpath)下,可以是.properties、.txt、.xml等形式,它们提供了与代码分离的配置选项。对于....

    JAVA中如何得到文件路径.pdf

    4. **读取相对路径**: - 可以使用`getClass().getResourceAsStream(filePath)`,其中`filePath`可以是`"/filename"`,这里的 `/` 代表 Web 发布根路径下的 `WEB-INF/classes`。 5. **获取文件真实路径**: - ...

    关于Java文件路径问题

    在Java中,文件路径可以是绝对路径或相对路径。绝对路径是从根目录开始的完整路径,它指明了文件的确切位置。相对路径则是相对于当前工作目录的路径,它的解析依赖于程序运行时的工作目录。在处理文件路径时,开发者...

    java 写文件 java 写文件 java 写文件 java 写文件

    10. **文件路径**:在Java中,文件路径可以是相对路径或绝对路径。相对路径是相对于当前工作目录的,而绝对路径是从根目录开始的完整路径。 以上就是关于Java写文件的基本知识,理解并熟练掌握这些概念和方法,将能...

    Java读写.txt文件

    在Java编程中,读写文本文件(如`.txt`文件)是常见的操作,尤其是在处理配置文件时。配置文件通常以键值对(key-value pairs)的形式存储数据,便于程序访问和管理设置。以下是对这个主题的详细阐述: 1. **Java I...

    java文件读写操作

    - 在Java中,文件路径可以是相对路径或绝对路径。使用`file.getAbsolutePath()`获取绝对路径。 以上就是Java进行文件读写操作的基础知识。在实际开发中,还需要根据具体需求选择合适的方法和策略,如处理大文件时...

    Java 中几种获取文件路径的方式

    文件的路径通常有 相对路径 与 绝对路径。 2.1 相对路径 以当前文件为基准进行一级级目录指向被引用的资源文件。在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变...

Global site tag (gtag.js) - Google Analytics