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

RT

第1个回答  2013-07-19
方法(一)、通过某个对象的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

java里绝对路径和相对路径的区别
URL绝对路径。 相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"\/"代表Web应用的根目录。和物理路径的相对表示,例如:".\/" 代表当前目录,"..\/"代表上级目录。这种类似的表示,也是属于相对路径。2.关于JSP\/Servlet中的相对路径和绝对路径。2.1服务器端的地址 服务器端...

还没搞懂Java中的路径?看完这篇文章你就全懂了
「相对路径:」相对路径是相对于目标文件位置的路径。但相对路径的相对性很重要,它可以是项目的根目录或classpath目录。下面通过一个例子来说明绝对路径和相对路径的区别。假设JavaIO模块下的resource目录下的a.txt文件,它的绝对路径和相对路径如下:「绝对路径:」D:\\code\\River\\JavaSE\\javaIO\\src\\main...

java里绝对路径和相对路径的区别是什么?
按照jdk Doc上的说法”绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。相反,相对路径名必须使用来自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录.”\\x0d\\x...

java开发中相对地址和绝对地址都是什么?
相对地址是相对你当前这个文件及文件夹的位置,绝对地址是指定了盘符,包含了你整个文件的完整路径。如:你的文件(F)在A文件夹内(有F2文件),A在B文件夹内(B文件在E盘下),那么文件F相对文件F2存在相对文件关系,F中引用F2 可以用 ..\/ 方法跳出文件夹读取文件F2 同事也F或者是F2也有绝对路径...

...获取某个磁盘上的某个文件的绝对路径和相对路径?有知道的麻烦告诉我...
String getAbsolutePath()返回抽象路径名的绝对路径名字符串。这个相对路径不好说:因为:假设:D盘 a\\ b\\ c\\这里有个1.txt 相对于c\\来说是:1.txt 相对于a\\来说是:b\\c\\1.txt 呵呵,你自己看 --- 那就全盘搜索吧(楼上的方法)Linux系统只用搜索一次 ...

java里面绝对路径和相对路径有什么区别?路径名和文件名有什么区别?各位...
绝对路径:从指定分区到目标地点经过的位置,如C:\/a\/v\/c\/d\/b 这就是绝对路径。相对路径:相对于当前文件所处位置的路径,如.\/b 这就是相对路径。路径名:是路径的名称,包含了该文件的相对或者绝对路径,显示了该文件所处的位置。文件名:用于标识文件但是和文件属性无关的字符串。

你知道,java项目中是如何获取文件地址的吗?
首先,class.getResource() 方法接受相对路径或绝对路径,相对路径是相对于当前类所在的类路径,而绝对路径则以'\/'开头,代表项目的根目录。它返回一个URL对象,指向指定的资源。相比之下,class.getClassLoader().getResource(String name) 方法仅接受相对路径,这里的相对路径是相对于Java类的ClassLoader...

如何解决java程序中资源路径错误
- **文件系统路径**:如果资源位于文件系统的某个位置,那么您将需要提供一个绝对路径或相对于项目根目录的相对路径。2. 确定资源的加载方式 您需要决定是使用类加载器(推荐用于内部资源)还是文件路径(通常用于外部资源)。- **使用类加载器**:当资源与您的代码打包在一起(例如,在JAR文件中)时...

java中用父路径和子路径创建file对象有什么用呢
是相对路径和绝对路径的问题 在Java中用File对象来创建文件时,绝对路径一般是不会出现什么问题的,如果使用相对路径,则有可能出现意向不到的问题,以下主要是针对相对路径进行解释 1、Eclipse下的Java Project环境 目录结构如下所示:JavaTest src com.ccse.TestDemo.java resource text.txt String file...

java高手请进!
这个方法可以通过与某个类的class文件的相对路径来获取文件或目录的绝对路径。 通常在程序中很难定位某个相对路径,特别是在B\/S应用中。通过这个方法,我们可以根据我们程序自身的类文件的位置来定位某个相对路径。比如:某个txt文件相对于程序的Test类文件的路径是..\/..\/resource\/test.txt,那么使用本...

相似回答