Java获取资源路径——(八)
获取文件资源有两种方式:
第一种是:
获取Java项目根目录开始制定文件夹下指定文件,不用类加载器(目录开始要加/)
1 // 获取工程路径 2 System.out.println(System.getProperty("user.dir")); 3 // E:\EclipseWorkspace\AllTest 4 5 // 获取工程路径下的文件 6 String path = System.getProperty("user.dir") + "\\test.txt"; 7 System.out.println(path); 8 // E:\EclipseWorkspace\AllTest\test.txt 9 10 // 获取工程指定文件夹下的文件(第一个目录加/) 11 String path1 = System.getProperty("user.dir") + "\\src\\txtFile\\test.txt"; 12 System.out.println(path1); 13 // E:\EclipseWorkspace\AllTest\src\txtFile\test.txt
第二种是:
通过类加载器获取:(path为相对ClassPath的路径,从ClassPath根下获取,不能以“/”开头)。
1 // 获取classpath路径 2 System.out.println(ClassLoaderTest.class.getClassLoader().getResource("")); 3 // file:/E:/EclipseWorkspace/AllTest/bin/ 4 5 // 获取classpath路径下txtFile文件夹指定内容(第一个目录不加/) 6 String path1 = ClassLoaderTest.class.getClassLoader().getResource("txtFile/test.txt").getPath(); 7 System.out.println(path1); 8 // /E:/EclipseWorkspace/AllTest/bin/txtFile/test.txt 9 10 // 获取classpath路径下指定内容 11 String path2 = ClassLoaderTest.class.getClassLoader().getResource("test.txt").getPath(); 12 System.out.println(path2); 13 // /E:/EclipseWorkspace/AllTest/bin/test.txt
-----------------------------------------------------------------------测试程序--------------------------------------------------------
1 package Java_Test; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.IOException; 6 import java.io.InputStream; 7 import java.io.OutputStream; 8 9 import org.junit.Test; 10 11 /** 12 * 测试类加载器读取资源 13 * 14 * @author: qlq 15 * @date : 2017年8月2日上午9:19:22 16 */ 17 public class ClassLoaderTest { 18 19 // Java同过类加载器读取资源路径问题 20 @Test 21 public void test1() throws IOException { 22 // 获取classpath路径 23 System.out.println(ClassLoaderTest.class.getClassLoader().getResource("")); 24 // file:/E:/EclipseWorkspace/AllTest/bin/ 25 26 // 获取classpath路径下txtFile文件夹指定内容(第一个目录不加/) 27 String path1 = ClassLoaderTest.class.getClassLoader().getResource("txtFile/test.txt").getPath(); 28 System.out.println(path1); 29 // /E:/EclipseWorkspace/AllTest/bin/txtFile/test.txt 30 31 // 获取classpath路径下指定内容 32 String path2 = ClassLoaderTest.class.getClassLoader().getResource("test.txt").getPath(); 33 System.out.println(path2); 34 // /E:/EclipseWorkspace/AllTest/bin/test.txt 35 } 36 37 // 通过系统的绝对路径获取,先获取工程目录,再获取工程目录下指定的文件 38 @Test 39 public void fun2() { 40 // 获取工程路径 41 System.out.println(System.getProperty("user.dir")); 42 // E:\EclipseWorkspace\AllTest 43 44 // 获取工程路径下的文件 45 String path = System.getProperty("user.dir") + "\\test.txt"; 46 System.out.println(path); 47 // E:\EclipseWorkspace\AllTest\test.txt 48 49 // 获取工程指定文件夹下的文件(第一个目录加/) 50 String path1 = System.getProperty("user.dir") + "\\src\\txtFile\\test.txt"; 51 System.out.println(path1); 52 // E:\EclipseWorkspace\AllTest\src\txtFile\test.txt 53 54 } 55 56 // 读取src文件夹下的文件(txtFile从classpath下开始,前面无/) 57 @Test 58 public void test3() throws IOException { 59 // txtFile代表src下面的一个文件夹 60 String path = ClassLoaderTest.class.getClassLoader().getResource("txtFile/test.txt").getPath(); 61 System.out.println(path); 62 // /E:/EclipseWorkspace/AllTest/bin/txtFile/test.txt 63 InputStream inputStream = new FileInputStream(new File(path)); 64 int value1; 65 while ((value1 = inputStream.read()) != -1) { // 读取文件 66 System.out.print((char) value1); // www 67 } 68 } 69 70 // 直接以流的形式读取获取 71 @Test 72 public void test4() throws IOException { 73 InputStream resourceAsStream = ClassLoaderTest.class.getClassLoader().getResourceAsStream("Java_Test/test.txt"); 74 int value; 75 while ((value = resourceAsStream.read()) != -1) { // 读取文件 76 System.out.print((char) value); 77 } 78 79 } 80 81 }
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix