6

当我使用以下代码时,我正在尝试获取 java 上的绝对文件路径:

File f = new File("..\\webapps\\demoproject\\files\\demo.pdf")  
String absolutePath = f.getAbsolutePath();

它在 32 位机器上给出了正确的文件路径

C:\Program Files\Apache Software Foundation\Tomcat6.0\bin\..\webapps\demoproject\files\demo.pdf 

但是当我在 64 位机器上运行它时,它会给出 FileNotFound 异常(因为 Program Files(x86)),如何获得正确的路径,而不管操作系统位如何。有人可以帮忙吗?

4

2 回答 2

1

我使用了下面的代码,它提供了正确的文件路径,我用来
System.getProperty("user.dir")获取当前工作目录并System.getenv("ProgramFiles")检查程序文件名。

`

    String downloadDir = "..\\webapps\\demoproject\\files";

    String currentdir = System.getProperty("user.dir");
    String programFiles = System.getenv("ProgramFiles");

    String filePath = "";
    if(programFiles.equals("C:\\Program Files"))
    {
        filePath = currentdir + "\\" + downloadDir + "\\demo.pdf";
    }
    else
    {
        filePath = currentdir + "\\" + "bin"+ "\\" + downloadDir + "demo.pdf";
    }

    File pdfFile = new File(filePath);
    String absolutePath = pdfFile.getAbsolutePath();
    System.out.println(absolutePath);

`
执行以下代码后,我得到以下路径-

在 32 位
C:\Program Files\Apache Software Foundation\Tomcat6.0\bin\..\webapps\demoproject\files\demo.pdf

在 64 位上
C:\Program Files (x86)\Apache Software Foundation\Tomcat6.0\bin\..\webapps\demoproject\files\demo.pdf

于 2013-08-01T10:50:36.017 回答
0

我不知道你的担忧。

试一试:

request.getServletContext().getRealPath("/")

无论底层平台如何,它都会为您提供应用程序根文件夹的上下文路径,您可以使用它添加所需文件夹或文件的相对路径(应用程序根文件夹的相对路径)以获得绝对路径。

于 2013-08-01T05:38:01.467 回答