关于“ java.io.FileNotFoundException: C:\Program%20Files\Apache%20Software%20Foundation\”的类似问题

本文解决了在Java项目中因路径编码问题导致无法正确读取文件的情况,通过使用URLDecoder进行解码,成功实现了文件的读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      昨天在项目中遇到了一个问题,

    问题如下:如图

   在项目中想要读取这两个文件。

   相应的代码为: BufferedReader reader2=new BufferedReader(new FileReader(PrivaligeFilter.class.getResource("/user.txt").getFile()));

  结果出现如下错误:

java.io.FileNotFoundException:C:\Program%20Files\Apache%20Software%20Foundation\Tomcat%207.0\webapps\MyStore\WEB-INF\classes\user.txt (系统找不到指定的路径。).

看错误的原因“%20”的位置应该是空格,出错的原因应该就是路径中存在空格后的编码问题;


对代码做如下修改:

String path = this.getClass().getResource("/admin.txt").getFile();
            try {
                path = java.net.URLDecoder.decode(path, "UTF-8");
            } catch (Exception e) {
                e.printStackTrace();
            }

然后再运行,搞定!

Microsoft Windows [版本 10.0.19045.5608] (c) Microsoft Corporation。保留所有权利。 C:\Users\XIN>catalina.bat run Using CATALINA_BASE: "C:\Program Files\apache-tomcat-9.0.97" Using CATALINA_HOME: "C:\Program Files\apache-tomcat-9.0.97" Using CATALINA_TMPDIR: "C:\Program Files\apache-tomcat-9.0.97\temp" Using JRE_HOME: "C:\Program Files\Java\jdk-17" Using CLASSPATH: "C:\Program Files\apache-tomcat-9.0.97\bin\bootstrap.jar;C:\Program Files\apache-tomcat-9.0.97\bin\tomcat-juli.jar" Using CATALINA_OPTS: "" NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED java.util.logging.ErrorManager: 4 java.io.FileNotFoundException: C:\Program Files\apache-tomcat-9.0.97\logs\catalina.2025-03-23.log (拒绝访问。) at java.base/java.io.FileOutputStream.open0(Native Method) at java.base/java.io.FileOutputStream.open(FileOutputStream.java:293) at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:235) at org.apache.juli.FileHandler.openWriter(FileHandler.java:447) at org.apache.juli.FileHandler.<init>(FileHandler.java:121) at org.apache.juli.FileHandler.<init>(FileHandler.java:108) at org.apache.juli.AsyncFileHandler.<init>(AsyncFileHandler.java:79) at org.apache.juli.AsyncFileHandler.<init>(AsyncFileHandler.java:74) at org.apache.juli.AsyncFileHandler.<init>(AsyncFileHandler.java:70) at org.apache.juli.AsyncFileHandler.<init>(AsyncFileHandler.java:66) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructo
03-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值