关于Java文件路径问题

处理Java开发中的文件路径编码问题 处理Java开发中的文件路径编码问题需要注意使用正确的字符编码方式,如UTF-8,并借助Java的NIO库或第三方库(如Apache Commons IO)来简化操作。通过采取适当的措施,我们可以有效地处理文件路径中的中文编码问题,并确保文件的正确读取和操作。它包含了一些用于处理文件路径编码的工具方法,可以简化我们的开发我们的开发过程。UTF-8是一种通用的字符编码方式,它可以正确表示绝大部分的字符,包括中文字符。Java的NIO库提供了更强大和灵活的文件操作功能,它对文件路径的编码处理更加友好。 阅读详情

1.如何获得当前文件路径

常用:

字符串类型:System.getProperty("user.dir");

综合:

package com.zcjl.test.base;
import java.io.File;
public class Test {
    public static void main(String[] args) throws Exception {
        System.out.println(
            Thread.currentThread().getContextClassLoader().getResource(""));
        System.out.println(Test.class.getClassLoader().getResource(""));
        System.out.println(ClassLoader.getSystemResource(""));

        System.out.println(Test.class.getResource(""));
        System.out.println(Test.class.getResource("/"));


        System.out.println(new File("").getAbsolutePath());
        System.out.println(System.getProperty("user.dir"));

    }
}

file:/E:/workSpace/javaTest/target/classes/
file:/E:/workSpace/javaTest/target/classes/
file:/E:/workSpace/javaTest/target/classes/
file:/E:/workSpace/javaTest/target/classes/javaAPI/
file:/E:/workSpace/javaTest/target/classes/
E:/workSpace/javaTest
E:/workSpace/javaTest

 

2.Web服务中

(1).Weblogic

WebApplication的系统文件根目录是你的weblogic安装所在根目录。
例如:如果你的weblogic安装在c:/bea/weblogic700.....
那么,你的文件根路径就是c:/.
所以,有两种方式能够让你访问你的服务器端的文件:
a.使用绝对路径:
比如将你的参数文件放在c:/yourconfig/yourconf.properties,
直接使用 new FileInputStream("/yourconfig/yourconf.properties");
b.使用相对路径:
相对路径的根目录就是你的webapplication的根路径,即WEB-INF的上一级目录,将你的参数文件放在yourwebapp/yourconfig/yourconf.properties,
这样使用:
new FileInputStream("yourconfig/yourconf.properties");
这两种方式均可,自己选择。

(2).Tomcat

在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin

(3).Resin

不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET
的路径为根.比如用新建文件法测试File f = new File("a.htm");
这个a.htm在resin的安装目录下

(4).如何读相对路径哪?

在Java文件中getResource或getResourceAsStream均可

例:getClass().getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web发布根路径下WEB-INF/classes

也可以getClass().getClassLoader().getResourceAsStream(filePath)//filePath不是带“/”的

(5).获得文件真实路径

string  file_real_path=request.getRealPath("mypath/filename"); 

通常使用request.getRealPath("/"); 

 4.遗留问题

目前new FileInputStream()只会使用绝对路径,相对


  InputStream in1 = new FileInputStream("abc1.properties"); // 相对路径
  InputStream in2 = new FileInputStream("/abc2.properties"); // 绝对路径,E盘下
  InputStream in3 = new FileInputStream("e://abc3.properties"); //相对路径

5.按Java文件类型分类读取配置文件

配 置文件是应用系统中不可缺少的,可以增加程序的灵活性。java.util.Properties是从jdk1.2就有的类,一直到现在都支持load ()方法,jdk1.4以后save(output,string) ->store(output,string)。如果只是单纯的读,根本不存在烦恼的问题。web层可以通过 Thread.currentThread().getContextClassLoader().
getResourceAsStream("xx.properties") 获取;

Application可以通过new FileInputStream("xx.properties");直接在classes一级获取。关键是有时我们需要通过web修改配置文件,我们不 能将路径写死了。经过测试觉得有以下心得:

1.servlet中读写。如果运用Struts 或者Servlet可以直接在初始化参数中配置,调用时根据servlet的getRealPath("/")获取真实路径,再根据String file = this.servlet.getInitParameter("abc");获取相对的WEB-INF的相对路径。
例:
InputStream input = Thread.currentThread().getContextClassLoader().
getResourceAsStream("abc.properties");
Properties prop = new Properties();
prop.load(input);
input.close();
OutputStream out = new FileOutputStream(path);
prop.setProperty("abc", “test");
prop.store(out, “–test–");
out.close();

2.直接在jsp中操作,通过jsp内置对象获取可操作的绝对地址。
例:
// jsp页面
String path = pageContext.getServletContext().getRealPath("/");
String realPath = path+"/WEB-INF/classes/abc.properties";

//java 程序
InputStream in = getClass().getClassLoader().getResourceAsStream("abc.properties"); // abc.properties放在webroot/WEB-INF/classes/目录下
prop.load(in);
in.close();

OutputStream out = new FileOutputStream(path); // path为通过页面传入的路径
prop.setProperty("abc", “abcccccc");
prop.store(out, “–test–");
out.close();

3.只通过Java程序操作资源文件
InputStream in = new FileInputStream("abc.properties"); // 相对路径,项目下的路径

OutputStream out = new FileOutputStream("abc.properties");


Java 解决中文文件路径乱码问题 在 Java 程序中,如果直接使用包含中文字符的文件路径进行文件操作,很可能会出现乱码问题。这是因为 Java 默认使用的是系统默认字符集(如 GBK、UTF-8),而文件路径中的中文字符可能与默认字符集不匹配,导致乱码。为了解决中文文件路径乱码问题,我们可以使用 Java 的 NIO (New Input/Output) 包中的 Path 类来处理文件路径。在 Java 编程中,处理中文文件路径时经常会遇到乱码问题。通过使用 Java 的 NIO 包中的 Path 类,我们可以解决中文文件路径乱码问题。 阅读详情

相关推荐

GlobalPlatform Technology Secure Channel Protocol ‘03‘ 标准 - 安全通道协议简介

按照GlobalPlatform Technology Secure Channel Protocol '03' (SCP03)标准,描述了如何利用S-MAC,S-RMAC,S-ENC进行安全通信的过程。

mmmx777的专栏 6091

Java路径问题的汇总(绝对路径、相对路径、yml、Java程序)

Java的路径问题(yml、Java程序、绝对路径、相对路径)

lili的点点滴滴 4686

告别PS串口焦虑:深入解析AXI Uartlite IP核如何将ZYNQ PL任意引脚变成串口(从Vivado约束到驱动文件全解析)

本文深入解析AXI Uartlite IP核如何将ZYNQ PL任意引脚变成串口,从Vivado约束到驱动文件全解析。通过AXI Uartlite IP核,开发者可以突破PS端UART数量限制,实现高效串口通信。文章详细介绍了IP核架构、Vivado工程配置、驱动开发及调试技巧,帮助开发者快速掌握这一技术。

weixin_33736649的博客 464

Java读取文件之路径问题

1,使用 ClassLoader.getSystemResourceAsStream(filename) : 在 普通Java项目下,你的文件与Java文件在同一包下,文件名不要加 “ / ”号 在maven 项目中,你的文件要在 resource 下,文件名参数也不要带 “ / ” 号 2,使用 java IO 中 自带的 File、 FileInputStream 、 FileReader 等 它们的 String filename 的有参构造,相对路径是从 java 工程目录开始的 , 举例

Hcy_code的博客 825

软件测试——白盒测试实验报告,输入年月日算星期几

软件测试——白盒测试实验报告,输入年月日算星期几,测试用例设计和结果展示

weixin_52278161的博客 2744

Unity URP热扭曲效果实战:如何让半透明物体也‘动’起来(附完整Shader代码)

本文深入解析Unity URP管线中热扭曲效果无法影响半透明物体的核心原因,并提供一套完整的实战解决方案。通过编写自定义Shader,并巧妙利用URP的Render Objects渲染器功能,成功让指定半透明物体(如粒子特效)也能被扭曲效果影响,从而制作出火焰、热浪等更具视觉冲击力的特效。文末附有完整的Shader代码与进阶优化技巧。

pz890123的博客 500

解决fortify扫描出的Path Manipulation问题(java语言)

编写java打码如下: 。。。 File proFile = new File(path); 。。。   使用fortify扫描,会报一个Path Manipulation的漏洞,怎么解决呢?看下面代码: HashMap map = new HashMap();   map.put("a", "a");   map.put("b", "b");   map.put("c", "c

wypdao的专栏 3万+

4、同轴3 - RRR球面并联机构运动分析与自主移动农业水果采摘机器人设计

本文研究了同轴3-RRR球面并联机构的运动学与速度分析,采用几何与数值方法进行位置分析,并利用螺旋理论简化雅可比矩阵的推导,通过ADAMS仿真验证了结果的准确性。同时提出一种新型自主移动农业水果采摘机器人设计,具备多功能末端执行器、水果软管转移系统和配重式静态稳定性结构,旨在减少采摘损伤、提升效率。文章还探讨了该机构在机器人控制与仿真中的应用潜力,以及采摘机器人在智能化升级与多机协作方面的发展方向。

y4z5a6b7的博客 244

【Java】关于文件路径问题总结

虽然文件路径在项目中不是经常的用到,用到的时候却不能灵活的使用,故在此总结。 绝对路径和相对路径 绝对路径:绝对路径是指文件在硬盘上真正存在的路径。 相对路径:相对于当前用户目录的相对路径 获取当前路径的方法 System.getProperty(“user.dir”)函数获取当前路径 //获取当前用户的路径 String path = System.g

北岭山下的博客 4787

MacBook Air老本重装系统

手里的这个本子型号是A1466,cpu i5,4G内存,硬盘ssd 120G。 重装系统可以在原系统上升级到更新版本,或者用U盘安装。 先确定,这个本子可以安装什么系统。 最权威的信息当然是apple的官网,地址:https://support.apple.com/zh-cn/HT211683 在“检查兼容性”中,可以依次检查每个系统兼容的硬件型号。Mojave是A1466能安装的最高版本。 确认兼容性后,下一步就是下载安装文件。还是这个页面稍下面一点可以找到。 这里告诉用户文件可以在什

bigwood99的博客 2万+

第20期-英伟达笔试题型解析

英伟达作为AI领域的缔造者及硬件基石,是这几年最为炙手可热的公司。英伟达以其高性能GPU设计闻名,硬件工程师岗位的招聘通常包括笔试和技术面试,考察领域涵盖数字电路设计、处理器架构、嵌入式系统和信号处理等。通过搜索公开平台,收集了候选人的面试经历和相关技术问题,,通过分析公开平台收集的笔试面试经验,结合英伟达的GPU架构特点,整理出可能涉及的典型题目,并提供详细解析。 以下是基于英伟达(Nvidia)硬件工程师笔试题型的解析与总结,涵盖核心知识点、解题思路及案例分析。

启芯硬件的博客 743

java 文件路径问题_java 文件路径问题

问题windows下路径分割符'',java程序可识别的是'\'或'/',通过用户输入的路径进行转换,变成程序可识别的,但是转化后的路径程序不识别。程序import java.io.FileNotFoundException;import java.io.FileReader;import java.util.Scanner;public class test {public static voi...

weixin_35170789的博客 322

2024华为OD机试真题-矩阵匹配-C++-OD统一考试(C卷D卷)

​从一个 N * M(N ≤ M)的矩阵中选出 N 个数,任意两个数字不能在同一行或同一列,求选出来的 N 个数中第 K 大的数字的最小值是多少。输入描述输入矩阵要求:1 ≤ K ≤ N ≤ M ≤ 150

goldarmour的博客 279

解决Java获取文件路径出现乱码的问题

       在Java中有时获取文件路径,获取的路径中存在中文或者是空格的时候,路径出现乱码。这个问题困扰了我好久,用过各种的转码都无济于事。在后来终于解决了,在这里和大家分享一下,其实也就是加一行代码的问题。      我在项目的是使用String path = this.getClass().getClassLoader().getResource("/").getPath().su

yss_luowei的专栏 5150

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

关于Java获取带空格的文件路径问题

在使用如下方法 String strPath = this.getClass().getResource("/").getPath(); 获取文件路径时,若原路径带有空格,在中文环境下得到以下结果 D:/Program%20Files/Apache%20Software%20Foundation/Tomcat%206.0/webapps/WebRoot/WEB-INF/classes/

宇宙气泡的博客 2885

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java 最直观的文件路径问题eclipse

java工程中的文件路径太太太太太太太太太太烦人了!! 网上找到的资料太乱了完全看不懂,所以自己亲自实验一下,希望就此解决这个问题! 在同一个包下 直接写文件名就好 "text.txt" 在包外面和包平级 文件名前面加点点斜杠 "../text.txt" 在包外的包外 "../../text.txt" 在与之平级的包内 "text/text.txt" 在与之平级的包中的包中 "text/text1/text.txt" 在另一个包中 "../text/te

weixin_40133254的博客 202

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

windows java路径问题_java 文件路径问题

问题windows下路径分割符'',java程序可识别的是'\'或'/',通过用户输入的路径进行转换,变成程序可识别的,但是转化后的路径程序不识别。程序import java.io.FileNotFoundException;import java.io.FileReader;import java.util.Scanner;public class test {public static voi...

weixin_31861065的博客 2650

Java获取文件路径及路径乱码问题

System.getProperty(“user.dir”) 构造:File(path) 构造:FileInputStream(“path”) XXX.class.getResource("").getPath() XXX.class.getClassLoader().getResource("").getPath() (以下演示均为Windows系统) 相对路径:src/test/resources/test.txt 绝对路径:D:\glearning\my_opensource\somproject\s

KING丨殇痕 1349

关于java文件路径问题总结

关于java文件路径问题总结 本文来源:http://blog.youkuaiyun.com/kevin99zhang/archive/2007/08/31/1766871.aspx  前言:这些天遇到不少文件路径的问题,有读写widows下文件路径的问题,也有在linux下读写文件路径的问题,所

yedian的专栏 938

java获取classpath文件路径空格转变成了转义字符%20的问题解决 !

java获取classpath文件路径空格转变成了转义字符%20的问题解决 ! 这个问题很纠结,服务器的文件路径带有空格,空格被转化是%20了,悲剧就出现了,赶紧收藏了! ======================= Java或web中解决所有路径问题 Java开发中使用的路径,分为两种:绝对路径和相对路径。归根结底,Java本质上只能使用绝对路径来寻找资源。所有的相对...

J2EE 1135
上一篇: 成为软件高手的几个忌讳 (转贴)
下一篇: javascript小技巧[转]
soleghost
博客等级 码龄24年 23粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值