Java中用于导出csv文件的相对路径

时间:2013-03-05 08:35:32

标签: java file path relative

我在Windows系统上开发了Java WebApp。它是一个分析程序,通过导出按钮将结果集导出到csv File for Excel。

现在的事实是:我已经将要导出的文件的路径硬编码为:

public String button1_action() {
   GenerateCSV  generateCSV = new GenerateCSV();

   Date zeitstempel = new Date();
   SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("_dd.MM.yyyy_HH.mm.ss");

   generateCSV.generateCsvFile("h:/VR-Analyse-Tool_Excel Output" +simpleDateFormat.format(zeitstempel) +".csv", getSessionBean1().getExistingRightsList()); 

   return null;
}

在我的本地系统上运行正常。

现在我已经在Linux系统上的tomcat6上部署了.war文件。现在这条路已经不再适用了。有人能帮助我吗?我不知道如何解决这个问题。

该程序适用于我公司的其他用户,他们应该能够在服务器上的个人驱动器/空间/金额上导出csv文件。每个人都在这个服务器上有自己的驱动器号(h:)。

3 个答案:

答案 0 :(得分:0)

而不是

h:/VR-Analyse-Tool_Excel Output

使用

/home/VR-Analyse-Tool_Excel Output

创建

h:/home
本地计算机上的

目录,它应该在两种环境中都有效。

答案 1 :(得分:0)

Windows file(h:your_filepath) , Unix (home/your_filepath)

中部署时,在web.xml中添加文件路径

<强>的web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
  <context-param>
    <param-name>downloadFilePath</param-name>
    <param-value>h:your_filepath</param-value>
  </context-param>
.
.
.
.
</web-app>

Java代码

public String button1_action() {
   GenerateCSV  generateCSV = new GenerateCSV();
   String filepath =  getServletContext().getInitParameter("downloadFilePath");
   Date zeitstempel = new Date();
   SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("_dd.MM.yyyy_HH.mm.ss");

   generateCSV.generateCsvFile(filepath  +simpleDateFormat.format(zeitstempel) +".csv", getSessionBean1().getExistingRightsList()); 

   return null;
}

答案 2 :(得分:0)

我强烈建议不要在相对路径中编写文件,因为在不同的系统(OS)中会有不同的解释 你想要的最后一件事是调试创建文件的位置

您可以选择以下任何一种方法

1)在.properties文件中声明值并从java程序中读取值。    这种方式当环境发生变化时,只需要编辑属性文件。所以重新编译是必要的

2)或者更好的是你可以使用这个Db表并使用它。

3)您可以在Web.xml中对Application上下文变量进行delare并使用它

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <web-app>
   <context-param>
     <param-name>csv_file_path</param-name>
     <param-value>h:/your_file_path</param-value>
   </context-param>
 .
 .
 .
 .
</web-app>