java 项目如何获取项目所在的物理根路径

java 项目如何获取项目所在的物理根路径,第1张

在java中获得文件的路径在我们做上传文件 *** 作时是不可避免的。web上运行1:thisgetClass()getClassLoader()getResource("/")getPath();thisgetClass()getClassLoader()getResource("")getPath();得到的是ClassPath的绝对URI路径。如:/D:/jboss-422GA/server/default/deploy/hpwar/WEB-INF/classes/SystemgetProperty("userdir");thisgetClass()getClassLoader()getResource("")getPath();得到的是项目的绝对路径。如:/D:/jboss-422GA/server/default/deploy/hpwar2:thisgetClass()getResource("/")getPath();thisgetClass()getResource("")getPath();得到的是当前类文件的URI目录。如:/D:/jboss-422GA/server/default/deploy/hpwar/WEB-INF/classes/com/jebel/helper/thisgetClass()getResource("")getPath();X不能运行3:ThreadcurrentThread()getContextClassLoader()getResource("/")getPath()ThreadcurrentThread()getContextClassLoader()getResource("")getPath()得到的是ClassPath的绝对URI路径。如:/D:/jboss-422GA/server/default/deploy/hpwar/WEB-INF/classes/ThreadcurrentThread()getContextClassLoader()getResource("")getPath()得到的是项目的绝对路径。如:/D:/jboss-422GA/server/default/deploy/hpwar在本地运行中1:thisgetClass()getClassLoader()getResource("")getPath();thisgetClass()getClassLoader()getResource("")getPath();得到的是ClassPath的绝对URI路径。如:/D:/myProjects/hp/WebRoot/WEB-INF/classesthisgetClass()getClassLoader()getResource("")getPath();X不能运行2:thisgetClass()getResource("")getPath();thisgetClass()getResource("")getPath();得到的是当前类文件的URI目录。如:/D:/myProjects/hp/WebRoot/WEB-INF/classes/com/jebel/helper//D:/myProjects/hp/WebRoot/WEB-INF/classes/得到的是ClassPath的绝对URI路径。如:/D:/myProjects/hp/WebRoot/WEB-INF/classes3:ThreadcurrentThread()getContextClassLoader()getResource("")getPath()ThreadcurrentThread()getContextClassLoader()getResource("")getPath()得到的是ClassPath的绝对URI路径。。如:/D:/myProjects/hp/WebRoot/WEB-INF/classesThreadcurrentThread()getContextClassLoader()getResource("/")getPath()X不能运行最后在Web应用程序中,我们一般通过ServletContextgetRealPath("/")方法得到Web应用程序的根目录的绝对路径。还有requestgetContextPath();在Weblogic中要用requestgetServletContext()getContextPath();但如果打包成war部署到Weblogic服务器,项目内部并没有文件结构的概念,用这种方式是始终得到null,获取不到路径,目前还没有找到具体的解决方案。

你没有理解项目和程序的区别。

实际运行的程序是没有所谓项目的概念的(不可能把源代码也复制过去吧?!),也就是说,你的应用程序运行时的目录下一开始是不会自动地产生ClientPhoto这个文件夹的(除非你在项目里将这个文件夹中的文件设置为“复制到输出目录”。)

所以你要做的,第一件事就是先获取应用程序的路径,然后判断这个路径下的目录存在不存在,如果不存在,要首先创建一个。

我们知道“ClientPhoto”其实只是一个相对路径而已,要获得绝对路径,首先要知道应用程序当前的绝对路径:只需要检索SystemWindowsFormsApplicationStartupPath这个属性即可。

string path = SystemWindowsFormsApplicationStartupPath;

然后将应用程序当前路径path和字符串“ClientPhoto”组合成为一个完整的文件夹绝对路径folder(这时候就是绝对路径了,但是,还没完!)。

string folder = SystemIOPathCombine(path, "ClientPhoto");

接着判断 folder 指定的文件夹是否存在。

bool folderExists = SystemIODirectoryExists(folder);

如果文件夹不存在,则创建它。如果创建不了,会引发异常,请自行捕捉这个异常。

if(!folderExists)

{

    SystemIODirectoryCreateDirectory(folder);

}

最后才返回路径 folder。

完整代码:

private string GetFolderPath()

{

    string folder = PathCombine(ApplicationStartupPath, "ClientPhoto");

    if(!DirectoryExists(folder))

    {

        DirectoryCreateDirectory(folder);

    }

    return folder;

}

File path =null;

      try {

path =new File(ResourceUtilsgetURL("classpath:")getPath());

      }catch (FileNotFoundException e) {

// nothing to do

      }

if (path ==null || !pathexists()) {

path =new File("");

      }

String pathStr = pathgetAbsolutePath();

// 如果是在eclipse中运行,则和target同级目录,如果是jar部署到服务器,则默认和jar包同级

      pathStr = pathStrreplace("\\target\\classes", "");

      //Systemoutprintln(pathStr+"\\upload");

      return pathStr+"\\upload\\";

我以前放的时候也遇到这个问题。总是找不到。后来发现服务器指向有问题,因为服务器只包含了主页面所在文件夹,如果主文件想访问上一级目录里的东西的话是没办法的,解决办法只有一个,以你的例子来看:

假如你以前服务器根目录指向为:c:/FlexJava/bin-debug/view/study

而assets目录存在于bin-debug目录下,那么就把服务器根目录指向c:/FlexJava/bin-debug吧,大不了就是定位HTML文件的时候多两层下级目录罢了,你试下。如果不能解决问题欢迎和我一起研究下问题所在,QQ30194377

第一步: 先获得classpath路径

String classpath = thisgetClass()getResource("/")getPath()replaceFirst("/", "");

这样子可以得到classpath路径,类似于:

F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/WEB-INF/classes/

然后把WEB-INF/classes截取就能获得WebAPP目录啦:

String webappRoot = classpathreplaceAll("WEB-INF/classes/", "");

得到的结果就是:

F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/

通过这个路径你就能获取该文件夹下的所有文件啦

java获取src目录下文件夹的相对路径问题如下:

目录结构:

project

out

src

readjava

testtxt

files

opts

项目为priject

out目录为class输出目录

src下为文件目录

src下有两个包,files、opts

想通过相对路径获取testtxt的路径

但是用反射只能获取到class,也就是out里的路径

输出后的目录不就是在out里面了,那个里面的和src里面的文件是一样的, getClass()getResource()就可以得到classpath了啊

看看设置的资源文件编译路径

以上就是关于java 项目如何获取项目所在的物理根路径全部的内容,包括:java 项目如何获取项目所在的物理根路径、C# 获取项目下文件夹路径、springboot获取项目路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9578617.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存