精华内容
下载资源
问答
  • java 绝对路径 转换成相对路径
    2021-02-12 15:48:50

    展开全部

    服务器中的Java类获得当前路径Weblogic WebApplication的系统文件根目录32313133353236313431303231363533e78988e69d8331333337616634是你的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 默认使用该方法的路径是:WEB-INF/classes.已经在Tomcat中测试。

    更多相关内容
  • 主要介绍了java区分绝对路径和相对路径的方法,实例分析了java针对路径操作的相关技巧,需要的朋友可以参考下
  • 主要介绍了JAVA获取文件绝对路径的方法,涉及针对文件路径的操作技巧,需要的朋友可以参考下
  • java绝对路径和相对路径Today we will look into the Java file path. Java File path can be abstract, absolute or canonical. 今天,我们将研究Java文件路径。 Java File路径可以是抽象的,绝对的或规范的。 ...

    java绝对路径和相对路径

    Today we will look into the Java file path. Java File path can be abstract, absolute or canonical.

    今天,我们将研究Java文件路径。 Java File路径可以是抽象的,绝对的或规范的。

    Java文件路径 (Java File Path)

    java.io.File contains three methods for determining the file path, we will explore them in this tutorial.

    java.io.File包含三种确定文件路径的方法,我们将在本教程中对其进行探讨。

    1. getPath(): This file path method returns the abstract pathname as String. If String pathname is used to create File object, it simply returns the pathname argument. If URI is used as argument then it removes the protocol and returns the file name.

      getPath() :此文件路径方法将抽象路径名作为String返回。 如果使用String路径名创建File对象,则仅返回pathname参数。 如果将URI用作参数,则它将删除协议并返回文件名。
    2. getAbsolutePath(): This file path method returns the absolute path of the file. If File is created with absolute pathname, it simply returns the pathname.

      If the file object is created using a relative path, the absolute pathname is resolved in a system-dependent way. On UNIX systems, a relative pathname is made absolute by resolving it against the current user directory.

      On Microsoft Windows systems, a relative pathname is made absolute by resolving it against the current directory of the drive named by the pathname, if any; if not, it is resolved against the current user directory.

      getAbsolutePath() :此文件路径方法返回文件的绝对路径。 如果使用绝对路径名创建File,则它仅返回路径名。

      如果使用相对路径创建文件对象,则以系统相关的方式解析绝对路径名。 在UNIX系统上,通过相对于当前用户目录解析相对路径名来使它成为绝对路径。

      在Microsoft Windows系统上,通过将相对路径名与由该路径名命名的驱动器的当前目录(如果有)进行解析来使它成为绝对路径。 如果不是,则针对当前用户目录进行解析。

    3. getCanonicalPath(): This path method returns the canonical pathname that is both absolute and unique. This method first converts this pathname to absolute form if necessary, as if by invoking the getAbsolutePath method, and then maps it to its unique form in a system-dependent way.

      This typically involves removing redundant names such as “.” and “..” from the pathname, resolving symbolic links (on UNIX platforms), and converting drive letters to a standard case (on Microsoft Windows platforms).

      getCanonicalPath () :此路径方法返回绝对且唯一的规范路径名。 如有必要,此方法首先将此路径名转换为绝对形式,就像通过调用getAbsolutePath方法一样,然后以与系统有关的方式将其映射为其唯一形式。

      这通常涉及删除多余的名称,例如“。”。 和(..)从路径名开始,解析符号链接(在UNIX平台上),并将驱动器号转换为标准大小写(在Microsoft Windows平台上)。

    Java文件路径示例 (Java File Path Example)

    Let’s see different cases of the file path in java with a simple program.

    让我们用一个简单的程序查看java中文件路径的不同情况。

    package com.journaldev.files;
    
    import java.io.File;
    import java.io.IOException;
    import java.net.URI;
    import java.net.URISyntaxException;
    
    public class JavaFilePath {
    
    	public static void main(String[] args) throws IOException, URISyntaxException {
    		File file = new File("/Users/pankaj/test.txt");
    		printPaths(file);
    		// relative path
    		file = new File("test.xsd");
    		printPaths(file);
    		// complex relative paths
    		file = new File("/Users/pankaj/../pankaj/test.txt");
    		printPaths(file);
    		// URI paths
    		file = new File(new URI("file:///Users/pankaj/test.txt"));
    		printPaths(file);
    	}
    
    	private static void printPaths(File file) throws IOException {
    		System.out.println("Absolute Path: " + file.getAbsolutePath());
    		System.out.println("Canonical Path: " + file.getCanonicalPath());
    		System.out.println("Path: " + file.getPath());
    	}
    
    }

    Below image shows the output produced by the above java file path program.

    下图显示了上述java文件路径程序产生的输出。

    The output is self-explanatory. Based on the output, using the canonical path is best suitable to avoid any issues because of relative paths.

    输出是不言自明的。 基于输出,使用规范路径最适合避免相对路径引起的任何问题。

    Also, note that the java file path methods don’t check if the file exists or not. They just work on the pathname of the file used while creating the File object. That’s all for different types of the file path in java.

    另外,请注意,java文件路径方法不会检查文件是否存在。 它们仅在创建File对象时使用的文件路径名上工作。 这就是java中不同类型的文件路径的全部。

    GitHub Repository. GitHub存储库中签出更多的Java IO示例。

    翻译自: https://www.journaldev.com/848/java-file-path-absolute-canonical

    java绝对路径和相对路径

    展开全文
  • java获取路径几种途径,1、获取web服务器下的文件路径,2、获取本地路径,3、获取相对路径
  • java web中File的相对路径与绝对路径总结,用于在运行时获取配置文件、动态加载对象等
  • 文件的路径通常有 相对路径 与 绝对路径。 2.1 相对路径 以当前文件为基准进行一级级目录指向被引用的资源文件。在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变...
  • 主要介绍了java项目中的绝对路径和相对路径用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,比如,你的Perl 程序是存放在 c:/apache/cgi-bin 下的,那么 c:/apache/cgi-bin就是cgi-bin目录的绝对路径二、路径使用不管你是新手还是老鸟...

    一、概念

    1、相对路径-顾名思义,相对路径就是相对于当前文件的路径。网页中一般表示路径使用这个方法。

    2、绝对路径-绝对路径就是你的主页上的文件或目录在硬盘上真正的路径。绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,比如,你的Perl 程序是存放在 c:/apache/cgi-bin 下的,那么 c:/apache/cgi-bin就是cgi-bin目录的绝对路径

    二、路径使用

    不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。

    项目的文件夹结构:

    9c22df95f8467ea036cd334a441c1f20.png

    1、在Java开发工具的project中使用相对路径

    在project中,相对路径的根目录是project的根文件夹,在此就是repathtest文件夹了。

    创建文件的写法是:

    File f = new File("src/com/lavasoft/res/a.txt");

    File f= new File("doc/b.txt");

    注意:

    路径不以“/”开头;

    脱离了IDE环境,这个写法就是错误的,也并非每个IDE都如此,但我见到的都是这样的。

    2、通过CLASSPATH读取包内文件

    读取包内文件,使用的路径一定是相对的classpath路径,比如a,位于包内,此时可以创建读取a的字节流:

    InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");

    有了字节流,就能读取到文件内容了。

    注意:

    这里必须以“/”开头;

    3、看看完整的测试代码

    packagecom.lavasoft.test;import java.io.*;/*** Java读取相对路径的文件

    *

    *@authorleizhimin 2010-1-15 10:59:43*/

    public classReadFile {public static voidmain(String[] args) {

    readTextA_ByClassPath();

    readTextA_ByProjectRelativePath();

    readTextB_ByProjectRelativePath();

    }/*** 通过工程相对路径读取(包内)文件,注意不以“/”开头*/

    public static voidreadTextA_ByProjectRelativePath() {

    System.out.println("-----------------readTextA_ByProjectRelativePath---------------------");

    File f= new File("src/com/lavasoft/res/a.txt");

    String a= file2String(f, "GBK");

    System.out.println(a);

    }/*** 通过工程相对路径读取(包外)文件,注意不以“/”开头*/

    public static voidreadTextB_ByProjectRelativePath() {

    System.out.println("-----------------readTextB_ByProjectRelativePath---------------------");

    File f= new File("doc/b.txt");

    String b= file2String(f, "GBK");

    System.out.println(b);

    }/*** 通过CLASSPATH读取包内文件,注意以“/”开头*/

    public static voidreadTextA_ByClassPath() {

    System.out.println("-----------------readTextA_ByClassPath---------------------");

    InputStream in= ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");

    String a= stream2String(in, "GBK");

    System.out.println(a);

    }/*** 文件转换为字符串

    *

    *@paramf 文件

    *@paramcharset 文件的字符集

    *@return文件内容*/

    public staticString file2String(File f, String charset) {

    String result= null;try{

    result= stream2String(newFileInputStream(f), charset);

    }catch(FileNotFoundException e) {

    e.printStackTrace();

    }returnresult;

    }/*** 文件转换为字符串

    *

    *@paramin 字节流

    *@paramcharset 文件的字符集

    *@return文件内容*/

    public staticString stream2String(InputStream in, String charset) {

    StringBuffer sb= newStringBuffer();try{

    Reader r= newInputStreamReader(in, charset);int length = 0;for (char[] c = new char[1024]; (length = r.read(c)) != -1;) {

    sb.append(c,0, length);

    }

    r.close();

    }catch(UnsupportedEncodingException e) {

    e.printStackTrace();

    }catch(FileNotFoundException e) {

    e.printStackTrace();

    }catch(IOException e) {

    e.printStackTrace();

    }returnsb.toString();

    }

    }

    (代码写得粗糙,异常没做认真处理)

    运行结果:

    -----------------readTextA_ByClassPath---------------------testtestsetsetsetsetsetsetsetset-----------------readTextA_ByProjectRelativePath---------------------testtestsetsetsetsetsetsetsetset-----------------readTextB_ByProjectRelativePath---------------------b.txt]b.txtb.txtb.txtb.txtb.txtb.txt

    这是通过eclipse开发工具运行的,结果没问题,如果换成控制台执行,那么使用了项目相对路径的读取方式会失败,原因是,此时已经脱离了项目的开发环境,-----这个问题常常困扰着一些菜鸟,代码在开发工具好好的,发布后执行就失败了!

    下面我截个图:

    bbfc794788f70c6c1bb66f78b790c2c9.png

    5.1、获取CLASSPATH下文件的绝对路径

    packagecom.lavasoft.test;importjava.io.File;/*** CLASSPATH文件的绝对路径获取测试

    *

    *@authorleizhimin 2010-1-18 9:33:02*/

    public classTest {//classpath的文件路径

    private static String cp = "/com/lavasoft/cfg/syscfg.properties";private static String cptest = "/com/lavasoft/cfg/test.properties";public static voidmain(String[] args) {//当前类路径

    System.out.println(Test.class.getClassLoader().getResource("").getPath());

    System.out.println(Test.class.getResource("").getFile());//当前类路径

    System.out.println(OtherProject.class.getClass().getResource("/").getFile());

    System.out.println(OtherProject.class.getClass().getResource(cptest).getFile());//当前类的绝对路径

    System.out.println(Test.class.getResource("/").getFile());//指定CLASSPATH文件的绝对路径

    System.out.println(Test.class.getResource(cp).getFile());

    System.out.println(Test.class.getResource(cptest).getPath());//指定CLASSPATH文件的绝对路径

    File f = new File(Test.class.getResource(cp).getFile());

    File ft= new File(Test.class.getResource(cptest).getFile());

    System.out.println(f.getPath());

    System.out.println(ft.getPath());//File ftest = new File("src/com/lavasoft/cfg/test.properties");//String a = ReadFile.file2String(ftest, "GBK");//System.out.println( a);

    }

    }

    5.2、获取其他项目的资源文件

    这里我新建了一个工程命名为:ClassPathExampeRealt,其中 ClassPathExample 依赖了 ClassPathExampeRealt

    bf30ef4048bfd827ec0e65395a38c621.png

    最后结果如下:

    读取ClassPathExampe/C:/Users/testMachine/mavenexample/ClassPathExample/bin/

    /C:/Users/testMachine/mavenexample/ClassPathExample/bin/com/lavasoft/test/

    /C:/Users/testMachine/mavenexample/ClassPathExample/bin/

    /C:/Users/testMachine/mavenexample/ClassPathExample/bin/com/lavasoft/cfg/syscfg.properties/C:/Users/testMachine/mavenexample/ClassPathExampeRealt/bin/com/lavasoft/cfg/test.properties

    读取ClassPathExampeRealt/C:/Users/testMachine/mavenexample/ClassPathExample/bin/

    /C:/Users/testMachine/mavenexample/ClassPathExampeRealt/bin/com/lavasoft/cfg/test.properties

    C:\Users\testMachine\mavenexample\ClassPathExample\bin\com\lavasoft\cfg\syscfg.properties

    C:\Users\testMachine\mavenexample\ClassPathExampeRealt\bin\com\lavasoft\cfg\test.properties

    可以知道,通过classpath路径 可以读取被依赖的项目下的文件;

    6、读取web 项目的 meta-inf文件

    项目结构如下:

    acf35acc183d1603ae5c7045109a52af.png

    packagecom.myexample;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.Reader;importjava.io.UnsupportedEncodingException;importjava.net.URL;public classReadFile {public static voidmain(String[] args) {

    String file= "/META-INF/test.properties";

    URL fileURL= ReadFile.class.getResource(file);

    System.out.println(fileURL);//readTextA_ByClassPath();

    if (fileURL != null) {

    }

    }

    }

    结果:

    file:/C:/Users/testMachine/mavenexample/ResourceExample/build/classes/META-INF/test.properties

    总结

    使用工程相对路径是靠不住的。

    使用CLASSPATH路径是可靠的。

    对于程序要读取的文件,尽可能放到CLASSPATH下,这样就能保证在开发和发布时候均正常读取。

    展开全文
  • 今天小编就为大家分享一篇完美解决Java获取文件路径出现乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了Java Web中解决路径问题的相关资料,java 文件路径有绝对路径与相对路径,这里提供了几种方法解决所有路径问题,需要的朋友可以参考下
  • java获得项目绝对路径

    2021-03-05 15:57:07
    在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。1.jsp中取得路径:以工程名为TEST为例:(1)得到包含工程名的当前...

    在jsp和class文件中调用的相对路径不同。

    在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。

    1.jsp中取得路径:以工程名为TEST为例:

    (1)得到包含工程名的当前页面全路径:request.getRequestURI()

    结果:/TEST/test.jsp

    (2)得到工程名:request.getContextPath()

    结果:/TEST

    (3)得到当前页面所在目录下全名称:request.getServletPath()

    结果:如果页面在jsp目录下 /TEST/jsp/test.jsp

    (4)得到页面所在服务器的全路径:application.getRealPath("页面.jsp")

    结果:D:\resin\webapps\TEST\test.jsp

    (5)得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();

    结果:D:\resin\webapps\TEST

    2.在类中取得路径:(1)类的绝对路径:Class.class.getClass().getResource("/").getPath()

    结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/

    (2)得到工程的路径:System.getProperty("user.dir")

    结果:D:\TEST

    3.在Servlet中取得路径:(1)得到工程目录:request.getSession().getServletContext().getRealPath("") 参数可具体到包名。

    结果:E:\Tomcat\webapps\TEST

    (2)得到IE地址栏地址:request.getRequestURL()

    结果:http://localhost:8080/TEST/test

    (3)得到相对地址:request.getRequestURI()

    结果:/TEST/test

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

    常用:

    (1).Test.class.getResource("")

    得到的是当前类FileTest.class文件的URI目录。不包括自己!

    (2).Test.class.getResource("/")

    得到的是当前的classpath的绝对URI。

    (3).Thread.currentThread().getContextClassLoader().getResource("")

    得到的也是当前ClassPath的绝对URI。

    (4).Test.class.getClassLoader().getResource("")

    得到的也是当前ClassPath的绝对URI。

    (5).ClassLoader.getSystemResource("")

    得到的也是当前ClassPath的绝对URI。

    尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径,后面可以看出得出结果五花八门。

    (6) new File("").getAbsolutePath()也可用。

    注:若这些路径中出现空格,并且空格被%20代替,则可以使用path = java.net.URLDecoder.decode(path,"utf-8") 进行转化;

    2.Web服务器

    (1).Tomcat

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

    (2).Resin

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

    这个a.htm在resin的安装目录下

    (3).如何读文件

    使用ServletContext.getResourceAsStream()就可以

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

    不建议使用request.getRealPath("/");

    转自http://blog.csdn.net/rogerjava/article/details/7568466

    展开全文
  • windows linux 下,获取java项目绝对路径的方法,struts2设置了struts.multipart.saveDir后会在根目录建立文件夹,这样会涉及linux下的权限问题
  • Java获取各种绝对路径的8种方法

    千次阅读 2021-02-12 09:18:38
    public class GetPath extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {//第1种:获取服务器二进制命令路径String path1 = ...
  • java获取当前类的绝对路径

    千次阅读 2021-02-12 10:02:08
    另,Class类还有一个getResourceAsStream方法,记得以前有个项目要读取在同一个包内的一个xml,就用的这个。1.如何获得当前文件路径常用:...(2).Test.class.getResource("/")得到的是当前的classpath的绝对URI路径...
  • JSP中java脚本获取绝对路径
  • 1. 绝对路径的方式读取文件 这个很简单,就是用大家熟悉的File类加载文件,然后用输入流读取文件内容就可以了。 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import ...
  • 一般在eclipse环境下使用,通过java类可以获取此类的存在路径
  • java绝对路径和相对路径

    千次阅读 2019-04-03 14:37:47
    其实 这些东西都是百度一下就出来的玩意,为什么要...1.绝对路径: this.getClass().getResource("").getPath(); this.getClass().getResource("/").getPath(); this.getClass().getResource("/com/hxkj").getPa...
  • java如何通过绝对路径和相对路径读取文件

    万次阅读 多人点赞 2018-05-29 19:24:20
    当我在写java的数据库连接时,希望通过使用文件的相对路径来读取信息,因为使用绝对路径时在代码移植之后就会出现问题,这不是一个好的方法 0x01 概念 绝对路径:在我们平时使用计算机时要找到需要的文件就必须...
  • Java 获取文件的绝对路径

    千次阅读 2020-09-03 10:41:32
    Java 获取文件的绝对路径 使用ClassLoader 类加载器 Properties pro = new Properties(); //获取src路径下的文件的方式--->ClassLoader 类加载器 ClassLoader classLoader = test.class.getClassLoader(); URL ...
  • Linux绝对路径和相对路径详解

    千次阅读 2021-03-03 16:09:16
    在Linux中简单的理解一个文件的路径,指的就是该...指明一个文件存放的位置,有2种方法,分别是使用绝对路径和相对路径。我们知道,Linux系统中所有的文件(目录)都被组织成以根目录“/”开始的倒置的树状结构,如图...
  • 在linux上经常使用ls,grep,vi等命令,如何查看这些命令的绝对路径呢?通过whereis/which 就可以啦,但是这两个命令之间还是有一些区别。网上查了一下资料,解释如下:which 用来查看当前要执行的命令所在的路径。...
  • 1.基本概念的理解绝对路径绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt 代表了test.txt文件的绝对路径。相对路径:相对与某个基准目录的路径。包含Web的相对路径...
  • 我想写“D: \\case\\**\\input”case下有case1,case2,case3文件夹,所以想用相对路径替代,应该怎么写呢?
  • java简单的绝对路径的写法

    千次阅读 2019-01-23 19:59:08
    一般服务器内部跳转是相对路径,其他的都是绝对路径比较好,这样报错比较少 而关于绝对路径,一般就在相对路径前加上绝对地址,讲不清了,上码 建一个EncodingFilter过滤器 package com.dodoke.filter; import java...
  • 【反射】java绝对路径获取文件

    千次阅读 2017-12-04 19:32:51
    1. Class.getResourceAsStream(String path)  用法:AAA.class.getResourceAsStream("a.txt")  path 不以'/'开头时默认是从此类所在的...其只是通过path构造一个绝对路径,最终还是由ClassLoader获...
  • Java中相对路径与绝对路径区别

    千次阅读 2018-08-10 07:50:00
    1.绝对路径 所谓绝对路径,就是资源文件在硬盘上的真实路径或者部署到web服务器上之后引用资源的完整路径。如: D:/项目名/css/a.css http://localhost:8080/项目名/css/a.css 可以为jsp中当前文件引入的资源...
  • 一、若路径为绝对路径: 若在windows系统中运行的程序,应该写成:"\\"或者"/"。反斜杠(\)是windows的目录分隔符,但在java程序中是特殊字符,需要转义,因此要写成"\\",最保险的做法是写成斜杠,即"/",因为"/"是...
  • Java中文件的相对路径与绝对路径

    万次阅读 多人点赞 2015-09-14 18:47:46
    通过这篇博客可以深入理解Java中相对路径与绝对路径的概念,同时对Eclipse和tomcat中的相对路径也做介绍,有助于开发。另外,getPath()、getAbsolutePath()、getCanonicalPath()的区别也做了说明。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 206,987
精华内容 82,794
关键字:

java绝对路径

java 订阅