java获取路径

来源:趣味经验馆 2.05W
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

很多朋友都想知道java如何获取路径?下面就一起来了解一下吧~

方法一:使用System获取路径

方法二:使用当前类的ProtectionDomain或者ClassLoader获取路径

方法三:使用Thread获取路径

方法一:

示例:

 public static  final String URLConfig = System.getProperty("user.dir").replace("bin", "webapps")+"/URLConfig.properties";//这种是将配置文件放到Tomcat的webapps的目录

其中的 System.getProperty("user.dir")  为获取用户当前工作目录

java的System.getProperty()方法可以获取的值

java获取路径

获取的代码示例:

public   class  SystemProperty {      public   static   void  main(String args[]) {         System.out.println("java_vendor:"  + System.getProperty( "java.vendor" ));         System.out.println("java_vendor_url:"                   + System.getProperty("java.vendor.url" ));         System.out.println("java_home:"  + System.getProperty( "java.home" ));         System.out.println("java_class_version:"                   + System.getProperty("java.class.version" ));         System.out.println("java_class_path:"                  + System.getProperty("java.class.path" ));         System.out.println("os_name:"  + System.getProperty( "os.name" ));         System.out.println("os_arch:"  + System.getProperty( "os.arch" ));         System.out.println("os_version:"  + System.getProperty( "os.version" ));         System.out.println("user_name:"  + System.getProperty( "user.name" ));         System.out.println("user_home:"  + System.getProperty( "user.home" ));         System.out.println("user_dir:"  + System.getProperty( "user.dir" ));         System.out.println("java_vm_specification_version:"                  + System.getProperty("java.vm.specification.version" ));         System.out.println("java_vm_specification_vendor:"                  + System.getProperty("java.vm.specification.vendor" ));         System.out.println("java_vm_specification_name:"                  + System.getProperty("java.vm.specification.name" ));         System.out.println("java_vm_version:"                  + System.getProperty("java.vm.version" ));         System.out.println("java_vm_vendor:"                  + System.getProperty("java.vm.vendor" ));         System.out                 .println("java_vm_name:"  + System.getProperty( "java.vm.name" ));         System.out.println("java_ext_dirs:"                  + System.getProperty("java.ext.dirs" ));         System.out.println("file_separator:"                  + System.getProperty("file.separator" ));         System.out.println("path_separator:"                  + System.getProperty("path.separator" ));         System.out.println("line_separator:"                  + System.getProperty("line.separator" ));     }

java获取路径 第2张

方法二:

public static String getMyDIR(){//获取当前类文件的绝对路径String jarWholePath = ConfigerPraram.class.getProtectionDomain().getCodeSource().getLocation().getFile(); try { //保险起见,将路径进行decode转码jarWholePath = java.net.URLDecoder.decode(jarWholePath, "UTF-8"); } catch (UnsupportedEncodingException e) { System.out.println(e.toString()); } //获取jar包的上级目录String jarPath = new File(jarWholePath).getParentFile().getAbsolutePath(); return jarPath;}/**     * 获取项目所在路径     *      * @return     */    public static String getRealPath() {     //通过类加载器获取jar包的绝对路径        String realPath = MyPath.class.getClassLoader().getResource("")                .getFile();        java.io.File file = new java.io.File(realPath);        realPath = file.getParentFile().getAbsolutePath(); //获取jar包的上级目录try {       //路径decode转码            realPath = java.net.URLDecoder.decode(realPath, "utf-8");        } catch (Exception e) {            e.printStackTrace();        }      return realPath ;   }

方法三:

Thread.currentThread().getContextClassLoader().getResource("")来得到当前的classpath的绝对路径的URI表示法

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();prop.setProperty("abc", “test");prop.store(new FileOutputStream(path), “–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");
热门标签