获取文件资源有两种方式:

第一种是:

获取Java项目根目录开始制定文件夹下指定文件,不用类加载器(目录开始要加/)

         // 获取工程路径
System.out.println(System.getProperty("user.dir"));
// E:\EclipseWorkspace\AllTest // 获取工程路径下的文件
String path = System.getProperty("user.dir") + "\\test.txt";
System.out.println(path);
// E:\EclipseWorkspace\AllTest\test.txt // 获取工程指定文件夹下的文件(第一个目录加/)
String path1 = System.getProperty("user.dir") + "\\src\\txtFile\\test.txt";
System.out.println(path1);
// E:\EclipseWorkspace\AllTest\src\txtFile\test.txt

第二种是:

  通过类加载器获取:(path为相对ClassPath的路径,从ClassPath根下获取,不能以“/”开头)。

         // 获取classpath路径
System.out.println(ClassLoaderTest.class.getClassLoader().getResource(""));
// file:/E:/EclipseWorkspace/AllTest/bin/ // 获取classpath路径下txtFile文件夹指定内容(第一个目录不加/)
String path1 = ClassLoaderTest.class.getClassLoader().getResource("txtFile/test.txt").getPath();
System.out.println(path1);
// /E:/EclipseWorkspace/AllTest/bin/txtFile/test.txt // 获取classpath路径下指定内容
String path2 = ClassLoaderTest.class.getClassLoader().getResource("test.txt").getPath();
System.out.println(path2);
// /E:/EclipseWorkspace/AllTest/bin/test.txt

  

-----------------------------------------------------------------------测试程序--------------------------------------------------------

 package Java_Test;

 import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import org.junit.Test; /**
* 测试类加载器读取资源
*
* @author: qlq
* @date : 2017年8月2日上午9:19:22
*/
public class ClassLoaderTest { // Java同过类加载器读取资源路径问题
@Test
public void test1() throws IOException {
// 获取classpath路径
System.out.println(ClassLoaderTest.class.getClassLoader().getResource(""));
// file:/E:/EclipseWorkspace/AllTest/bin/ // 获取classpath路径下txtFile文件夹指定内容(第一个目录不加/)
String path1 = ClassLoaderTest.class.getClassLoader().getResource("txtFile/test.txt").getPath();
System.out.println(path1);
// /E:/EclipseWorkspace/AllTest/bin/txtFile/test.txt // 获取classpath路径下指定内容
String path2 = ClassLoaderTest.class.getClassLoader().getResource("test.txt").getPath();
System.out.println(path2);
// /E:/EclipseWorkspace/AllTest/bin/test.txt
} // 通过系统的绝对路径获取,先获取工程目录,再获取工程目录下指定的文件
@Test
public void fun2() {
// 获取工程路径
System.out.println(System.getProperty("user.dir"));
// E:\EclipseWorkspace\AllTest // 获取工程路径下的文件
String path = System.getProperty("user.dir") + "\\test.txt";
System.out.println(path);
// E:\EclipseWorkspace\AllTest\test.txt // 获取工程指定文件夹下的文件(第一个目录加/)
String path1 = System.getProperty("user.dir") + "\\src\\txtFile\\test.txt";
System.out.println(path1);
// E:\EclipseWorkspace\AllTest\src\txtFile\test.txt } // 读取src文件夹下的文件(txtFile从classpath下开始,前面无/)
@Test
public void test3() throws IOException {
// txtFile代表src下面的一个文件夹
String path = ClassLoaderTest.class.getClassLoader().getResource("txtFile/test.txt").getPath();
System.out.println(path);
// /E:/EclipseWorkspace/AllTest/bin/txtFile/test.txt
InputStream inputStream = new FileInputStream(new File(path));
int value1;
while ((value1 = inputStream.read()) != -1) { // 读取文件
System.out.print((char) value1); // www
}
} // 直接以流的形式读取获取
@Test
public void test4() throws IOException {
InputStream resourceAsStream = ClassLoaderTest.class.getClassLoader().getResourceAsStream("Java_Test/test.txt");
int value;
while ((value = resourceAsStream.read()) != -1) { // 读取文件
System.out.print((char) value);
} } }

Java获取资源路径——(八)的更多相关文章

  1. Java获取资源的路径

    在Java中,有两种路径: 类路径 文件夹路径 使用类路径有两种方式: object.getClass().getResource()返回资源的URL MyClass.class.getResourc ...

  2. javaWeb项目中的路径格式 请求url地址 客户端路径 服务端路径 url-pattern 路径 获取资源路径 地址 url

    javaweb项目中有很多场景的路径客户端的POST/GET请求,服务器的请求转发,资源获取需要设置路径等这些路径表达的含义都有不同,所以想要更好的书写规范有用的路径代码 需要对路径有一个清晰地认知 ...

  3. Eclipse获取资源路径

    一.问题: 这几天做一个单机版的数据抓取项目,之前都加载了spring或者是maven 使用[this.getClass().getClassLoader().getResource("ma ...

  4. IDEA中获取资源路径问题

    更正 以src开始,就能用相对路径了... shift+ctrl+alt+s 调出项目结构, 在Modules里,就是设置 Sources Resources Test的界面, 右面的路径就是相对路径 ...

  5. java获取类加载路径和项目根路径的5种方法

    // 第一种:获取类加载的根路径 D:\IDEAWorkspace\hs-bluetooth-lock\src\applications\bluetooth-api\target\classes Fi ...

  6. Java获取资源文件

    比如我们有以下目录 |--project |--src |--javaapplication |--Test.java |--file1.txt |--file2.txt |--build |--ja ...

  7. JAVA获取webapp路径

    1.使用ServletContext获取webapp目录 在Servlet中 String path = getServletContext().getRealPath("/"); ...

  8. java 获取类路径

    package com.jason.test; import java.io.File; import java.io.IOException; import java.net.URL; public ...

  9. Java获取各种路径

    (1).request.getRealPath("/");//不推荐使用获取工程的根路径(2).request.getRealPath(request.getRequestURI( ...

随机推荐

  1. ajax 调用 java webapi 多个参数(一)

    最近开发 java webapi. 遇到一个问题,如果是多个参数(其中包含对象类型),我应该怎么传递? 一  先看解决方案: ajax <script> var data={ " ...

  2. Fantasy of a Summation LightOJ - 1213 (快速幂)

    题意: 首先 只看第一层循环的A[0],是不是用了nk-1次  A[1]也是用了nk-1次······ 所以 第一层的sum(A[i]的和) 一共用了nk-1 所以第一层为sum * nk-1 因为又 ...

  3. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)A,B,C

    A:链接:http://codeforces.com/contest/831/problem/A 解题思路: 从前往后分别统计递增,相等,递减序列的长度,如果最后长度和原序列长度相等那么就输出yes: ...

  4. MT【225】两平行直线夹曲线

    已知函数$f(x)=x^3-3ax,(x\in(0,1))$若关于$x$的不等式$|f(x)|\le \dfrac{1}{4}$恒成立,求实数$a=$____ 方法一:代数法,转化成恒成立问题,略.方 ...

  5. 【BZOJ3507】通配符匹配(哈希,动态规划)

    [BZOJ3507]通配符匹配(哈希,动态规划) 题面 BZOJ 题解 对于匹配唯一存在影响的只有通配符,而\(?\)的影响也并不大,所以唯一需要仔细考虑的是\(*\). 考虑一个\(dp\),设\( ...

  6. 修复Mysql主从不同步shell

    使用第三方工具MySQL Enterprise Monitor,MySQL企业版监控工具.MONyog – MySQL Monior and Advisor,MONyog大家都不陌生,windows下 ...

  7. volatile的实现原理与应用

    Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. vola ...

  8. Tyvj 1518 CPU监控——极恶线段树

    题目大意: 给定一个区间及其各个元素的初值,要求支持如下操作: 1.区间加 2.区间赋值 3.查询区间最大值 4.查询区间历史最大值 分析: 容易想到线段树,但是细思恶极(仔细想想恶心到了极点)的是, ...

  9. RMQ求解->ST表

    ST表 这是一种神奇的数据结构,用nlogn的空间与nlongn的预处理得出O(1)的区间最大最小值(无修) 那么来看看这个核心数组:ST[][] ST[i][j]表示从i到i+(1<<j ...

  10. “==”运算符与equals()

    “==”运算符,比较内存地址 equals(),比较内容(值) public class Book { public static void main(String[] args) { String ...