-
2022-03-25 08:49:39
1、首先需要在maven工程下的resources文件夹下添加文件
2、通过右边代码获取路径String fileName = dataPreProcess.class.getClassLoader().getResource(“char_to_id.txt”).getPath();更多相关内容 -
Java 中几种获取文件路径的方式
2020-12-23 00:59:14Java 开发中我们经常要获取文件的路径,比如读取配置文件等等。今天我们就关于文件的路径和如何读取文件简单地探讨一下。 2. 文件的路径 文件的路径通常有 相对路径 与 绝对路径。 2.1 相对路径 以当前文件为基准... -
Java获取相对路径文件
2021-10-11 17:03:20class.getResourceAsStream("")获得的是相对路径 class.getClassLoader().getResourceAsStream("")加载器获得是绝对路径 Class.getResourceAsStream(String path) : (1)不以 “/” 开头时,默认是从此类所在的包...1. 文件在src下
class.getResourceAsStream("")获得的是相对路径
class.getClassLoader().getResourceAsStream("")加载器获得是绝对路径Class.getResourceAsStream(String path) :
(1)不以 “/” 开头时,默认是从此类所在的包下取资源。
(2)以**“/”**开头,则是从ClassPath(Src根目录)根下获取。Class.getClassLoader.getResourceAsStream(String path) :
默认则是从ClassPath根下获取,path不能以’/'开头。2. 文件在src同级目录下
InputStream in = new BufferedInputStream(new FileInputStream("./test/aaa.txt"));
-
java区分绝对路径和相对路径的方法
2020-09-03 19:30:51主要介绍了java区分绝对路径和相对路径的方法,实例分析了java针对路径操作的相关技巧,需要的朋友可以参考下 -
Java相对路径读取文件
2021-02-12 15:19:51不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。项目的文件夹结构:repathtest├─src│└─com│└─lavasoft...不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。
项目的文件夹结构:
repathtest
├─src
│ └─com
│ └─lavasoft
│ ├─test
│ └─res
├─doc
1、在Java开发工具的project中使用相对路径
在project中,相对路径的根目录是project的根文件夹,在此就是repathtest文件夹了。
创建文件的写法是:
File f = new File("src/com/lavasoft/res/a.txt");
File f = new File("doc/b.txt");
注意:
路径不以“/”开头;
脱离了IDE环境,这个写法就是错误的,也并非每个IDE都如此,但我见到的都是这样的。
2、通过CLASSPATH读取包内文件
读取包内文件,使用的路径一定是相对的classpath路径,比如a,位于包内,此时可以创建读取a的字节流:
InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");
有了字节流,就能读取到文件内容了。
注意:
这里必须以“/”开头;
3、看看完整的测试代码
package com.lavasoft.test;
import java.io.*;
/**
* Java读取相对路径的文件
*
* @author leizhimin 2010-1-15 10:59:43
*/
public class ReadFile {
public static void main(String[] args) {
readTextA_ByClassPath();
readTextA_ByProjectRelativePath();
readTextB_ByProjectRelativePath();
}
/**
* 通过工程相对路径读取(包内)文件,注意不以“/”开头
*/
public static void readTextA_ByProjectRelativePath() {
System.out.println("-----------------readTextA_ByProjectRelativePath---------------------");
File f = new File("src/com/lavasoft/res/a.txt");
String a = file2String(f, "GBK");
System.out.println(a);
}
/**
* 通过工程相对路径读取(包外)文件,注意不以“/”开头
*/
public static void readTextB_ByProjectRelativePath() {
System.out.println("-----------------readTextB_ByProjectRelativePath---------------------");
File f = new File("doc/b.txt");
String b = file2String(f, "GBK");
System.out.println(b);
}
/**
* 通过CLASSPATH读取包内文件,注意以“/”开头
*/
public static void readTextA_ByClassPath() {
System.out.println("-----------------readTextA_ByClassPath---------------------");
InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");
String a = stream2String(in, "GBK");
System.out.println(a);
}
/**
* 文件转换为字符串
*
* @param f 文件
* @param charset 文件的字符集
* @return 文件内容
*/
public static String file2String(File f, String charset) {
String result = null;
try {
result = stream2String(new FileInputStream(f), charset);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return result;
}
/**
* 文件转换为字符串
*
* @param in 字节流
* @param charset 文件的字符集
* @return 文件内容
*/
public static String stream2String(InputStream in, String charset) {
StringBuffer sb = new StringBuffer();
try {
Reader r = new InputStreamReader(in, charset);
int length = 0;
for (char[] c = new char[1024]; (length = r.read(c)) != -1;) {
sb.append(c, 0, length);
}
r.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
}
(代码写得粗糙,异常没做认真处理)
运行结果:
-----------------readTextA_ByClassPath---------------------
aaaaaaaaa
sssssssss
-----------------readTextA_ByProjectRelativePath---------------------
aaaaaaaaa
sssssssss
-----------------readTextB_ByProjectRelativePath---------------------
bbbbbbbbbbb
Process finished with exit code 0
这是通过IDEA开发工具运行的,结果没问题,如果换成控制台执行,那么使用了项目相对路径的读取方式会失败,原因是,此时已经脱离了项目的开发环境,-----这个问题常常困扰着一些菜鸟,代码在开发工具好好的,发布后执行就失败了!
下面我截个图:
5、获取CLASSPATH下文件的绝对路径
当使用相对路径写入文件时候,就需要用到绝对路径。下面是个例子:
package com.lavasoft;
import java.io.File;
/**
* CLASSPATH文件的绝对路径获取测试
*
* @author leizhimin 2010-1-18 9:33:02
*/
public class Test {
//classpath的文件路径
private static String cp = "/com/lavasoft/cfg/syscfg.properties";
public static void main(String[] args) {
//当前类的绝对路径
System.out.println(Test.class.getResource("/").getFile());
//指定CLASSPATH文件的绝对路径
System.out.println(Test.class.getResource(cp).getFile());
//指定CLASSPATH文件的绝对路径
File f = new File(Test.class.getResource(cp).getFile());
System.out.println(f.getPath());
}
}
输出:
/D:/projects/bbt/code/cdn/planrpt/out/production/planrpt/
/D:/projects/bbt/code/cdn/planrpt/out/production/planrpt/com/lavasoft/cfg/syscfg.properties
D:\projects\bbt\code\cdn\planrpt\out\production\planrpt\com\lavasoft\cfg\syscfg.properties
Process finished with exit code 0
总结
使用工程相对路径是靠不住的。
使用CLASSPATH路径是可靠的。
对于程序要读取的文件,尽可能放到CLASSPATH下,这样就能保证在开发和发布时候均正常读取。
-----------------------
推荐资源:
-
浅谈java 中文件的读取File、以及相对路径的问题
2020-08-27 03:56:00今天小编就为大家分享一篇浅谈java 中文件的读取File、以及相对路径的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
解析java资源文件相对路径
2021-07-03 21:17:36现有如下项目结构: ...可手动设置。无展开项时,默认包名折叠。 带码规范:代码中用相对地址 " / ",以保证代码...path是以.class文件为目标的相对路径。 Class对象的生成方式如下: Class.forName(“类名字符串”)现有如下项目结构:
注意:cn.edu.test 中的小数点表示包名的分隔,这种是eclipse中的包名折叠显示方式。可手动设置。无展开项时,默认包名折叠。
带码规范:代码中用相对地址 " / ",以保证代码的可移植性,而避免使用绝对地址 " \\ " 。
前言扩展
TestClass .class.getResource(String path): 获取资源文件路径。path是以.class文件为目标的相对路径。
Class对象的生成方式如下:- Class.forName(“类名字符串”) (注意:类名字符串必须是全称,包名+类名)
- 类名.class
- 实例对象.getClass()
相对路径测试代码
package cn.edu.test; public class TestClass { public static void main(String[] args) { // 打印class资源文件路径 System.out.println(TestClass.class.getResource("")); System.out.println(TestClass.class.getResource("./")); System.out.println(TestClass.class.getResource("../")); System.out.println(TestClass.class.getResource("/")); } }
输出
file:/E:/java-workspace/Test/bin/cn/edu/test/ file:/E:/java-workspace/Test/bin/cn/edu/test/ file:/E:/java-workspace/Test/bin/cn/edu/ file:/E:/java-workspace/Test/bin/
说明
"" 和 "./" 表示当前目录 "../" 表示上一级目录 "/" 表示根目录。根目录为:项目src资源文件目录,也是.class字节码文件目录,或者说工程项目文件下的bin目录。
相对地址符号混用测试代码
package cn.edu.test; public class TestClass { public static void main(String[] args) { System.out.println(TestClass.class.getResource("././")); System.out.println(TestClass.class.getResource(".././")); System.out.println(TestClass.class.getResource("./../")); System.out.println(TestClass.class.getResource("../../")); System.out.println(TestClass.class.getResource("/./")); } }
输出
file:/E:/java-workspace/Test/bin/cn/edu/test/ file:/E:/java-workspace/Test/bin/cn/edu/ file:/E:/java-workspace/Test/bin/cn/edu/ file:/E:/java-workspace/Test/bin/cn/ file:/E:/java-workspace/Test/bin/
说明
"./" "../" "/" 可混用。
-
java项目路径 文件路径 相对路径 整理
2021-03-04 01:52:43下面的源码中有不错的解决中文路径的方法:package com.wbtask;...public class UrlUtil {/*** 取得当前类所在的文件*@paramclazz*@return*/public static File getClassFile(Class clazz){URL path = clazz.... -
Java获取项目相对路径的方法
2020-03-26 17:31:00String rootPath= System.getProperty("user.dir") 这样就获取到了项目的根目录。 上面那种方式还得手动拼接,还可以通过下面方式直接获取 //这里在项目下面新建了一个... //打印出相对路径 System.out.print... -
JAVA 获取web文件的相对路径
2021-02-12 16:01:56转自:http://wwwdd2315.blog.163.com/blog/static/66661889201091953350298/在JAVA文件中获取该项目的相对路径1.基本概念的理解绝对路径:绝对路径就是你主页上的文件的完整URL或文件目录在硬盘上的真正的路径,它... -
怎样在JAVA文件中获取该项目的相对路径
2021-02-26 09:25:461.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,...相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录。... -
在JAVA文件中获取该项目的相对路径
2021-02-26 10:09:231.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,...相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录。... -
Java 获得resource相对路径
2021-09-27 21:56:14//当前服务执行的路径:Z:\workspace\license String path = System.getProperty("user.dir"); //没有找到直接得到resources路径的方法,我是直接加了对应路径,有找到的请留言抬一手,谢谢 //tempPath = System.... -
[Java]JAVA获取相对路径问题的解决
2021-02-26 08:33:311.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL...相对路径:相对与某个基准目录的路径.包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录.和物... -
java 写入文件时该如何获取相对路径?
2021-02-27 13:29:10public class DBConn {public static String erro;private static Context initCtx = null;private static ComboPooledDataSource ds = null;//private static ComboPooledDataSource dataSource;... -
相对路径和绝对路径的区别,java获取项目访问路径的方法
2021-02-12 23:10:26相对路径和绝对路径的区别在HTML里只要涉及文件的地方(如超级链接、图片等)就会涉及绝对路径与相对路径的概念。1.绝对路径绝对路径是指文件在硬盘上真正存在的路径。例如“bg.jpg”这个图片是存放在硬盘的“E:\book\... -
JAVA文件中获取该项目的相对路径方法
2021-02-13 01:18:441.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,...相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录。... -
Java获取路径方法&相对路径读取xml文件方法
2021-03-03 11:58:42//不推荐使用获取工程的根路径 (2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用 (3)、request.getSession().getServletContext().getRealPath... -
java中File的相对路径与绝对路径总结
2018-11-12 17:56:35java web中File的相对路径与绝对路径总结,用于在运行时获取配置文件、动态加载对象等 -
java中如何使用相对路径读取文件
2021-03-03 14:07:49java中使用相对路径读取文件的方法:1、使用文件【File file = new File(“src/test.txt”)】方法;2、使用类的相对路径;3、使用当前线程的类加载器;4、读取web工程下的文件。【相关学习推荐:java中使用相对路径... -
【文件处理】java中文件的相对路径与绝对路径
2020-04-18 19:54:24下面的corejava项目下,labs-v2ch02模块下,有4个文件,1.properties、2.properties、3.properties、4.properties。 当我们需要使用这4个文件的时候,怎样创建文件对象呢? 2. 基本知识 (1) 不同的操作系统,文件的... -
获取Java文件路径
2021-02-26 12:54:481.如何获得当前文件路径常用:字符串类型:System.getProperty("user.dir");综合:package com.zcjl.test.base;import java.io.File;public class Test {public static void main(String[] args) throws Exception {... -
springboot如何获取相对路径文件夹下静态资源的方法
2020-08-26 01:35:59主要介绍了springboot如何获取相对路径文件夹下静态资源的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧