Java 如何获取文件路径?

Java 如何获取文件路径?,java,eclipse,jsp,url,tomcat,Java,Eclipse,Jsp,Url,Tomcat,我正在从事一个EclipseWeb动态项目,并试图访问本地机器/服务器中存在的文件 我要找的是CodeIgniter中类似“base_url()”的东西,它会自动指向服务器所在的目录 我用的是Mac电脑 try{ model.read(new FileInputStream(url),""); }catch(IOException e) { System.out.println("Exception caught"+e.getMes

我正在从事一个EclipseWeb动态项目,并试图访问本地机器/服务器中存在的文件

我要找的是CodeIgniter中类似“base_url()”的东西,它会自动指向服务器所在的目录

我用的是Mac电脑

try{
          model.read(new FileInputStream(url),"");
      }catch(IOException e)
      {
          System.out.println("Exception caught"+e.getMessage());
      }
这是我正在处理的代码的一部分,我正在尝试提供正确的URL路径来读取

在搜索StackOverflow和其他地方后,我发现了以下代码:

String url = request.getRequestURL().toString().replace(request.getRequestURI().substring(1), request.getContextPath())
            +"/WebContent/WEB-INF/test.xml";
这似乎不起作用

然后,我试图硬编码路径目录,结果发现我不知道Mac文件系统是如何工作的:/

有人能分享一些关于这方面的信息吗


提前谢谢

如果您使用的是
servlet
或其他东西(如WS),我不太清楚,但是
请求
对象公开了一个名为
getRealPath()
的方法,该方法提供了很好的。。。servlet上下文在文件系统中的实际路径

因此,您需要使用以下内容更改代码:

String url = this.getServletContext().getRealPath("")+"/test.xml";

它与操作系统无关,因为你肯定知道java是可移植的。

我想你想要的是

String path = getServletContext().getRealPath("/");
哪个指向服务器中应用程序的bas目录

e.g. /opt/tomcat/webapps/MyApp

我总是使用getResourceAsStream并从我的类路径中吸收它。平面文件名在web应用程序内部是有问题的。

可能存在
FileSeperator
问题。在Linux中,文件分隔符是“/”,在windows机器中是“\”。这可能就是问题所在。它生成以下内容:http:/localhost:8080/iWeb/WebContent/WEB-INF/test.xml,由于某种原因,这是错误的。尽管无论我怎么看它都是正确的。所以没有文件分隔符问题,因为web url将使用相同的文件路径分隔符“/”