java开发常遇到路径问题

import java.io.File;
import java.io.IOException;
import java.net.URL;

public class MyUrlDemo {

 public static void main(String[] args) {
     MyUrlDemo muDemo = new MyUrlDemo();
     try {
         muDemo.showURL();
     } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
     }
 }

 public void showURL() throws IOException {

     // 第一种:获取类加载的根路径   D:\git\daotie\daotie\target\classes
     File f = new File(this.getClass().getResource("/").getPath());
     System.out.println(f);

     // 获取当前类的所在工程路径; 如果不加“/”  获取当前类的加载目录  D:\git\daotie\daotie\target\classes\my
     File f2 = new File(this.getClass().getResource("").getPath());
     System.out.println(f2);

     // 第二种:获取项目路径    D:\git\daotie\daotie
     File directory = new File("");// 参数为空
     String courseFile = directory.getCanonicalPath();
     System.out.println(courseFile);


     // 第三种:  file:/D:/git/daotie/daotie/target/classes/
     URL xmlpath = this.getClass().getClassLoader().getResource("");
     System.out.println(xmlpath);


     // 第四种: D:\git\daotie\daotie
     System.out.println(System.getProperty("user.dir"));
     /*
      * 结果: C:\Documents and Settings\Administrator\workspace\projectName
      * 获取当前工程路径
      */

     // 第五种:  获取所有的类路径 包括jar包的路径
     System.out.println(System.getProperty("java.class.path"));

 }

}
用于附件上传下载获取当前项目路径的方法

(1)、request.getRealPath("/");//不推荐使用获取工程的根路径
(2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用
(3)、request.getSession().getServletContext().getRealPath("/");//获取工程的根路径,这个方法比较好用,可以直接在servlet和jsp中使用
(4)、 this.getClass().getClassLoader().getResource("").getPath();//获取工程classes 下的路径,这个方法可以在任意jsp,servlet,java文件中使用,因为不管是jsp,servlet其实都是java程序,都是一个 class。所以它应该是一个通用的方法。

注意: 在用IDEA开发时,项目启动的是预加载的项目,不会生成空的文件夹,做附件保存时,要先创建文件夹,在继续操作。

猜你喜欢

转载自blog.csdn.net/qq_43054241/article/details/101198270