问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中处理绝对路径与相对路径问题

发布网友 发布时间:2022-04-27 11:56

我来回答

1个回答

热心网友 时间:2023-09-16 19:53

方法(一)、通过某个对象的getClass()方法取得Class,其中包含了类的许多信息。在其中找取得URL之类的方法,以便取得URL,然后调用URL的getpath()方法,取得字符串并稍作处理就得到该类的Class文件的绝对路径,在此基础上就可以方便的使用相对路径。Object.getClass().getResource("/").getPath(); 方法(二) 通过类加载器获取路径信息public abstract class ClassLoader extends Object类加载器是负责加载类的对象。ClassLoader 类是一个抽象类。如果给定类的二进制名称,那么类加载器会试图查找或生成构成类定义的数据。一般策略是将名称转换为某个文件名,然后从文件系统读取该名称的“类文件”。 (1) 利用Thread类中的类加载器Thread.currentThread().getContextClassLoader()(2) 利用Class类获取类加载器ClassName.class(或者 对象.getClass()).getClassLoader()API中ClassLoader的相关方法1、public URL getResource(String name)查找具有给定名称的资源。资源是可以通过类代码以与代码基无关的方式访问的一些数据(图像、声音、文本等)。资源名称是以 '/' 分隔的标识资源的路径名称。 此方法首先搜索资源的父类加载器;如果父类加载器为 null,则搜索的路径就是虚拟机的内置类加载器的路径。如果搜索失败,则此方法将调用 findResource(String) 来查找资源。 2、public static URL getSystemResource(String name)从用来加载类的搜索路径中查找具有指定名称的资源。此方法通过系统类加载器来查找资源。 方法(三)利用文件来获取路径 File ff=new File("");API中File类相关的方法:java.io.File 文件和目录路径名的抽象表示形式。1、public String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串2、public String getCanonicalPath() throws IOException 返回此抽象路径名的规范路径名字符串。 3、public String getPath() 将此抽象路径名转换为一个路径名字符串。所得字符串使用默认名称分隔符分隔名称序列中的名称。4、public boolean isAbsolute()测试此抽象路径名是否为绝对路径名。绝对路径名的定义与系统有关。在 UNIX 系统上,如果路径名的前缀是 "/",那么该路径名是绝对路径名。在 Microsoft Windows 系统上,如果路径名的前缀是后跟 "\\" 的盘符,或者是 "\\\\",那么该路径名是绝对路径名。 方法(四)利用System类提供信息java.lang.System 包 public final class System extends Object 类 System 类包含一些有用的类字段和方法。它不能被实例化。在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。方法:public static String getProperty(String key) 获取指定键指示的系统属性。首先,如果有安全管理器,则用该键作为其参数来调用 checkPropertyAccess 方法。结果可能导致 SecurityException。 如果没有当前系统属性的集合,则首先用与 getProperties 方法相同的方式创建并初始化系统属性的集合。 参数: key - 系统属性的名称。返回: 系统属性的字符串值,如果没有带有此键的属性,则返回 null。 获取当前工作目录为:System.getProperty("user.dir") // 方法一,利用Class的getResource方法类获取信息(实际上该方法委托ClassLoader类实现) url= absp.getClass().getResource("/AbsPath.class"); path = url.getPath(); System.out.println("方法一:\nURL is : " + url); System.out.println("get Path is : " + path); System.out.println("Real Path is : " + path.substring(1)+"\n"); // 方法二,利用ClassLoader类获取信息 ClassLoader loader=Thread.currentThread().getContextClassLoader(); //或者 //loader = AbsPath.class.getClassLoader(); url=loader.getResource(""); path=url.getPath(); System.out.println("方法二:\nURL is : " + url); System.out.println("get Path is : " + path); System.out.println("Real Path is : " + path.substring(1)); System.out.println(ClassLoader.getSystemResource("")+"\n"); // 方法三,利用文件来处理 File ff=new File(""); System.out.println("方法三:\n"+ff.getAbsolutePath()); System.out.println(ff.getCanonicalPath()); System.out.println(ff.isAbsolute()+ff.getPath()+"\n"); //方法四,利用System类相关信息 System.out.println("方法四:\n"+System.getProperty("user.home"));//用户主目录 System.out.println(System.getProperty("user.dir"));//用户的当前工作目录 System.out.println(System.getProperty("java.class.path"));//Java类路径 System.out.println(System.getProperty("os.name"));//操作系统名称 System.out.println(System.getProperty("os.version"));//操作系统版本 方法一:URL is : file:/D:/Java/EclipseWorkSpace/MyJavaDocs/AbsPath.classget Path is : /D:/Java/EclipseWorkSpace/MyJavaDocs/AbsPath.classReal Path is : D:/Java/EclipseWorkSpace/MyJavaDocs/AbsPath.class 方法二:URL is : file:/D:/Java/EclipseWorkSpace/MyJavaDocs/get Path is : /D:/Java/EclipseWorkSpace/MyJavaDocs/Real Path is : D:/Java/EclipseWorkSpace/MyJavaDocs/file:/D:/Java/EclipseWorkSpace/MyJavaDocs/ 方法三:D:\Java\EclipseWorkSpace\MyJavaDocsD:\Java\EclipseWorkSpace\MyJavaDocsfalse 方法四:d:\我的文档D:\Java\EclipseWorkSpace\MyJavaDocsD:\Java\EclipseWorkSpace\MyJavaDocsWindows XP5.1
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
长期胃胀怎么调理 魔渊之刃弓箭手攻略 弓箭手法盘装备发育攻略 妻妾迎新送死,倏恩倏爱,倏痛倏悲,缠绵不了是什么意思? 请学过美术或者动漫游戏设计的人回答我的问题。 画一个穿着和头型都相 ... ...和“我有一个可爱并且很淘气的女儿”用英文怎么说 “如果你叫我回答这个问题就是浪费时间,希望老师能找下一个学生”有英 ... 加勒比海盗拍了几部 《加勒比海盗5》第四部女主或回归 与开花同框 购买佳能相机开出的正式发票是佳能公司统一的发票还是各销售公司自己... ...我想早点上美国陪他,请问现在可以办旅游探亲证吗? 每个人的英文单词怎么拼 什么是java的相对路径和绝对路径阿 怎么访问相对路径里的文件和绝对路径里的文件 (每个人)用英文怎么读? 脸上什么地方的痣不能取啊? java 怎样获取一个文件相对路径 脸上的黑痣可以取吗? java中怎么把绝对路径改成相对路径? 每个人 用英语怎么说 java绝对路径和相对路径的区别 脸上的痣可以取吗? java相对路径怎么写 脸上的痣能随便取吗? java如何获取文件的相对路径啊? 关联词有哪几大类?每类有哪些? 脸上的痣不能乱取 是真的吗 java里绝对路径和相对路径的区别是什么? 脸上的痣,能乱取吗。 关联词如何分类,不同的分类都表示什么关系? java 相对路径问题。 请问我脸上的痣哪些可以取?哪些不可以取? 每个人用英语怎么写 Java中相对路径的使用 每个人用英语咋说?(除过everyone) 如何在java web项目中获得相对路径 每个人的英文单词怎么拼? 关于JAVA项目中相对路径和绝对路径的表示 每个人 ,的英语单词怎么写啊? java 相对路径 “你们每个人”用英语怎么说? Java中的相对路径怎么写啊? 其他人每个人 用英语怎么说 Java中的相对路径问题 每个人在生活中都扮演着不同的角色用英语怎么说 java 绝对路径 转换成相对路径 每个人都以不同的方式面对生活这个用英语怎么说 每个人都有一个幸福的家庭 我也一样 (用英语怎么写) 每个人的能力都不同,我们不能因为别人没有自己所拥有的能力而嘲笑别人用英语怎么说 我们每个人用英语怎么说? 怎么办理支付宝收款码 看书神在哪下?