D:workspace.metadata.pluginsorg.eclipse.wst.server.core

D:workspace.metadata.pluginsorg.eclipse.wst.server.core,第1张

用Jsp获取、用Java类获取或用servlet获取项目绝对路径

一、用Jsp获取

1、获取文件绝对路径

String file="文件";(例如:datamdb)

String path=applicationgetRealPath(file);

2、获取文件的绝对路径

String p2=requestgetRequestURI();

3、获取当前jsp页面的路径

String p3=requestgetContextPath();

4、获取当前项目的路径

String p4=requestgetServletPath(); 

二、用Java类获取

1、获取Eclipse路径

String a1=SystemgetProperty("userdir");

2、获取当前的classpath路径

String a2=类名classgetResource("")toString();

String a3=DBConnectionclassgetResource("/")toString();

String a4=DBConnectionclassgetClassLoader()getResource("")toString();

String t=ThreadcurrentThread()getContextClassLoader()getResource("")getPath();

3、获取文件的绝对路径

如果要获取WebContent目录下的文件绝对路径怎么办?可以用下面的方法

String t=ThreadcurrentThread()getContextClassLoader()getResource("")getPath();

int num=tindexOf("metadata");

String path=tsubstring(1,num)replace('/', '\\')+"项目名\\WebContent\\文件";

三、用servlet获取

1、获取项目的绝对路径

requestgetSession()getServletContext()getRealPath("")

2、获取浏览器地址

requestgetRequestURL()

3、获取当前文件的绝对路径

requestgetSession()getServletContext()getRealPath(requestgetRequestURI())

默认情况下使用

这样获取到的是项目classpath 下的 aaatxt

如果想获取非项目路径下的文件内容怎么办呢,看了下@Value的好像也没有说,

其实

这样是可以获取到 百度首页的内容的它这里使用的是>

我用weblogic 1034

不打WAR包进行部署。正常。

我程序中取得该项目的绝对路径程序为:

String realRootPath = ServletActionContextgetServletContext()getRealPath("/");

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

实际运行的程序是没有所谓项目的概念的(不可能把源代码也复制过去吧?!),也就是说,你的应用程序运行时的目录下一开始是不会自动地产生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;

}

阁下需要在使用框架,那么就要把项目里的第一个程序都放在框架架构之中,而不能在根目录下新建一个adminphp。 阁下应该知晓,CI框架的入口文件是indexphp,里面的任何页面都应该基于这个入口文件,即访问路径永远是indexph

File类有两个常用方法可以得到文件路径一个是:getCanonicalPath(),另一个是:getAbsolutePath(),可以通过File类的实例调用这两个方法例如filegetAbsolutePath()其中file是File的实例对象。下面是一个具体例子:

public class PathTest

{

    public static void main(String[] args)

    {

        File file = new File("\\src\\baidu");

        Systemoutprintln(filegetAbsolutePath());

        try

        {

            Systemoutprintln(filegetCanonicalPath());

        } catch (IOException e)

        {

            eprintStackTrace();

        }

    }

}

getAbsolutePath()和getCanonicalPath()的不同之处在于,getCanonicalPath()得到的是一个规范的路径,而getAbsolutePath()是用构造File对象的路径+当前工作目录。例如在上面的例子中(点号)代表当前目录。getCanonicalPath()就会把它解析为当前目录但是getAbsolutePath()会把它解析成为目录名字(目录名字是点号)。

下面是上面程序在我电脑上的输出:

G:\xhuoj\konw\\src\baidu

G:\xhuoj\konw\src\baidu

你应该在项目中(war)开发的时候,就配置一个 configproperties 的文件,专门用来定义这些固定的路径或参数。

然后,你在程序中或页面中使用的时候,直接通过加载这个 configproperties 文件内容到一个 ResourceBundle 中,然后通过 ResourceBundle 读这个内容里面定义的参数名来处理。

如:

ResourceBundle config = (这里加载的方法网上找一下,忘记了);

String path = configgetProperty("real-path");

以上就是关于D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core全部的内容,包括:D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core、spring boot @Value 获取计算机中绝对路径文件的内容、打成WAR包后怎么取得该项目的绝对路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9430241.html

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

发表评论

登录后才能评论

评论列表(0条)

保存