【问题标题】:Relative Path in Java for exporting csv-filesJava中用于导出csv文件的相对路径
【发布时间】:2013-02-19 13:53:47
【问题描述】:

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

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

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:)。

【问题讨论】:

    标签: java file path relative-path


    【解决方案1】:

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

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

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

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

    3) 你可以在 Web.xml 中去定义一个应用程序上下文变量并使用它

     <?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>
    

    【讨论】:

    • 大家好,谢谢您的即时回复。我将尝试使用属性文件。听起来不错。
    【解决方案2】:

    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;
    }
    

    【讨论】:

      【解决方案3】:

      而不是

      h:/VR-Analyse-Tool_Excel Output
      

      使用

      /home/VR-Analyse-Tool_Excel Output
      

      创建一个

      h:/home
      

      本地计算机上的目录,它应该在两种环境中都可以工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-12
        • 2015-09-14
        • 2013-09-06
        • 2013-01-11
        • 2017-07-01
        • 2012-01-28
        • 2013-10-29
        • 1970-01-01
        相关资源
        最近更新 更多