使用String path = FileUtilTest.class.getResource(“/1.txt“).getPath(); 报找不到路径

在windows环境运行,下面的springboot中path怎么找不到文件呢? path输出后的结果是:路径是多少:/D:/bjpowernode/msb/%e4%b9%90%e4%b9%8b%e8%80%85/apache%20commons/SpringBootBase6/target/test-classes/1.txt 怎么解决一下呢? import cn.hutool.core.io.FileUtil; public class FileUtilTest { @Test public void test3() { String path = FileUtilTest.class.getResource("/1.txt").getPath(); System.out.println("路径是多少:"+path); } }

在Windows环境下,当你使用Class.getResource()方法获取资源路径时,可能会遇到路径格式问题,特别是涉及到URL编码(如空格被转换为%20,中文字符被转义等)的情况。从你提供的路径输出结果来看,确实存在这种URL编码的问题。

解决方案
要解决这个问题,你可以采取以下几种方法之一:

方法一:使用Paths.get(URL.toURI())来正确处理路径
Java的Paths类和URI类可以帮助我们正确处理这些转义字符,并生成正确的文件系统路径。以下是修改后的代码示例:

Java
深色版本
import cn.hutool.core.io.FileUtil;
import org.junit.Test;

import java.net.URL;
import java.nio.file.Paths;

public class FileUtilTest {

    @Test
    public void test3() throws Exception {
        URL resourceUrl = FileUtilTest.class.getResource("/1.txt");
        String path = Paths.get(resourceUrl.toURI()).toString();
        System.out.println("路径是多少:" + path);

        // 如果你需要读取文件内容,可以继续使用path变量
        byte[] bytes = FileUtil.readBytes(path);
        System.out.println("bytes.length=" + bytes.length);
    }
}
方法二:直接使用getResourceAsStream()
为了避免路径转换带来的问题,可以直接使用getResourceAsStream()方法来获取输入流,而不是尝试将URL转换为文件路径。这种方法更加通用且不易出错:

Java
深色版本
import cn.hutool.core.io.IoUtil;
import org.junit.Test;

import java.io.InputStream;

public class FileUtilTest {

    @Test
    public void test3() throws Exception {
        InputStream inputStream = FileUtilTest.class.getResourceAsStream("/1.txt");
        if (inputStream == null) {
            System.out.println("资源未找到!");
            return;
        }

        byte[] bytes = IoUtil.readBytes(inputStream);
        System.out.println("bytes.length=" + bytes.length);

        // 确保关闭输入流
        IoUtil.close(inputStream);
    }
}
总结
方法一适用于你需要获得实际的文件系统路径的情况。
方法二更为推荐,尤其是在处理资源文件时,因为它避免了与操作系统相关的路径问题,并且能够很好地处理打包到JAR中的情况。
根据你的具体情况选择合适的方法进行调整即可解决问题。如果1.txt文件是作为测试资源的一部分,请确保它位于src/test/resources/目录下,并且已经被正确地包含在构建路径中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/78185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】二叉树进阶面试题

根据二叉树创建字符串 重点是要注意括号省略问题,分为以下情况: 1.左字树为空,右子树不为空,左边括号保留 2.左右子树都为空,括号都不保留 3。左子树不为空,右子树为空,右边括号不保留 如果根节…

RSUniVLM论文精读

一些收获: 1. 发现这篇文章的table1中,有CDChat ChangeChat Change-Agent等模型,也许用得上。等会看看有没有源代码。 摘要:RSVLMs在遥感图像理解任务中取得了很大的进展。尽管在多模态推理和多轮对话中表现良好,现有模…

低空AI系统的合规化与标准化演进路径

随着AI无人机集群逐步参与城市空域治理、物流服务与公共安全作业,其系统行为不再是“技术封闭域”,而需接受法规监管、责任评估与接口协同的多方审查。如何将AI集群系统推向标准化、可接入、可审计的合规体系,成为未来空中交通演进的关键。本…

【金仓数据库征文】从云计算到区块链:金仓数据库的颠覆性创新之路

目录 一、引言 二、金仓数据库概述 2.1 金仓数据库的背景 2.2 核心技术特点 2.3 行业应用案例 三、金仓数据库的产品优化提案 3.1 性能优化 3.1.1 查询优化 3.1.2 索引优化 3.1.3 缓存优化 3.2 可扩展性优化 3.2.1 水平扩展与分区设计 3.2.2 负载均衡与读写分离 …

致远oa部署

文章目录 环境搭建项目构建 仅供学习使用 环境搭建 准备项目: https://pan.quark.cn/s/04a166575e94 https://pan.xunlei.com/s/VOOc1c9dBdLIuU8KKiqDa68NA1?pwdmybd# 官方文档: https://open.seeyoncloud.com/v5devCTP/ 安装时 mysql 数据库可能出现字符集设置…

移远通信智能模组助力东成“无边界智能割草机器人“闪耀欧美市场

2025年4月21日,移远通信宣布,旗下SC206E-EM智能模组已成功应用于江苏东成电动工具有限公司旗下的DCK TERRAINA无边界智能割草机器人。 这款智能模组高度集成计算、通信、定位等多元能力,以小型化、低功耗、实时性强和低成本等综合优势&#…

100.HTB-Meow

学习成果 在第一层,您将获得网络安全渗透测试领域的基本技能。您将首先学习如何匿名连接到各种服务,例如 FTP、SMB、Telnet、Rsync 和 RDP。接下来,您将发现 Nmap 的强大功能,Nmap 是一个有价值的工具,用于识别目标系统…

大厂面试-redis

前言 本章内容来自B站黑马程序员java大厂面试题和小林coding 博主学习笔记,如果有不对的地方,海涵。 如果这篇文章对你有帮助,可以点点关注,点点赞,谢谢你! 1.redis的使用场景 1.1 缓存 缓存穿透 在布…

【含文档+PPT+源码】基于SpringBoot+vue的疫苗接种系统的设计与实现

项目介绍 本课程演示的是一款 基于SpringBootvue的疫苗接种系统的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系…

【Pandas】pandas DataFrame dot

Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象(如 DataFrame、Series 或标量)的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…

Windows上Tomcat 11手动启动startup.bat关闭shutdown.bat

发现tomcat11无法手动双击startup.bat和shutdown.bat进行开启和关闭。双击startup.bat命令窗口一闪而过就是启动失败了,正常启动成功是cmd命令窗口有全副的执行输出且不关闭窗口。 解决方法如下:主要更改一个tomcat安装目录下的/conf/server.xml配置 1.…

7.9 Python+Click实战:5步打造高效的GitHub监控CLI工具

Python+Click实战:5步打造高效的GitHub监控CLI工具 GitHub Sentinel Agent 命令行界面开发实战 关键词:CLI 开发实践、Click 框架、API 集成、命令行参数解析、错误处理机制 1. 命令行界面技术选型与架构设计 GitHub Sentinel 采用 Click + Requests 技术栈构建 CLI 工具,…

安全框架概述

Java中的安全框架通常是指解决Web应用安全问题的框架,如果开发Web应用时没有使用安全框架,开发者需要自行编写代码增加Web应用安全性。自行实现Web应用的安全性并不容易,需要考虑不同的认证和授权机制、网络关键数据传输加密等多方面的问题&a…

配置 C/C++ 语言智能感知(IntelliSense)的 c_cpp_properties.json 文件内容

配置 C/C 语言智能感知(IntelliSense)的 c_cpp_properties.json 文件内容 {"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/opt/ros/humble/include/**&quo…

【安全扫描器原理】网络扫描算法

【安全扫描器原理】网络扫描算法 1.非顺序扫描2.高速扫描 & 分布式扫描3.服务扫描 & 指纹扫描 1.非顺序扫描 参考已有的扫描器,会发现几乎所有的扫描器都无一例外地使用增序扫描,即对所扫描的端口自小到大依次扫描,殊不知&#xff0…

理解欧拉公式

1. 欧拉公式中的符号 欧拉公式 e i x cos ⁡ x i sin ⁡ x e^{ix}\cos xi\sin x eixcosxisinx当 x π x \pi xπ时 e i π 1 0 / / 欧拉恒等式 e^{i\:\pi}10 //欧拉恒等式 eiπ10//欧拉恒等式 e e e:自然对数的底 i i i:虚数, i 2 − 1 i^2 -1 i2−1 cos…

HTML邮件背景图兼容 Outlook

在 HTML 邮件中设置背景图片时,Outlook(尤其是桌面版的 Outlook for Windows)经常不会正确显示背景图,这是因为outlook 是使用 Word 作为邮件渲染引擎,而不是标准的 HTML/CSS 渲染方式。 推荐的解决方案:使…

杰理ac792开发板按键不起效果

按键想要起效果需要把UI给注释掉,排查了半天

Kubernetes 常用运维命令整理

目录 Kubernetes 常用运维命令整理一、集群管理二、Pod 和容器管理三、Deployment 和应用管理四、Service 和网络管理五、存储管理六、ConfigMap 和 Secret 管理七、资源使用与监控八、调度和容错九、Role 和权限管理十、清理资源 总结 Kubernetes 常用运维命令整理 Kubernete…

在 Debian 12 中恢复被删除的 smb.conf 配置文件

https://forum.ubuntu.com.cn/viewtopic.php?t494763 本文结合ai输出,内容中有些错误,但确实解决了我的问题,我采取保留完整输出的方式摘录。 在 Debian 12 中恢复被删除的 smb.conf 配置文件,需结合 dpkg 和 ucf(Upd…