Относительный путь в Java для экспорта csv-файлов


Я разработал Java WebApp на системе Windows. Это аналитическая программа, в которой результирующий набор экспортируется в csv-файл для Excel с помощью кнопки export.

Теперь факт: я жестко закодировал путь к файлу для экспорта:

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

Это прекрасно работает в моей локальной системе.

Теперь я развернул файл .war на tomcat6 в системе Linux. Теперь этот путь больше не работает. Кто-нибудь может мне помочь? Я не знаю, как это решить.

Программа предназначена для другие пользователи в моей компании, которые должны иметь возможность экспортировать csv-файл на своем личном диске / пространстве / количестве на сервере. У каждого есть свой диск на этом сервере с буквой диска (h:).

3 3

3 ответа:

Я настоятельно рекомендую не писать файлы в относительном пути, так как это будет интерпретироваться по-разному в разных системах (OS) Последнее, что вам нужно, это отладка, где файл был создан

Вы можете выбрать один из следующих подходов

1) имеют значение, объявленное В.файл свойств и считывает значение из программы java. таким образом, когда среда изменяется, нужно только отредактировать файл свойств. Поэтому необходима перекомпиляция

2) или лучше бы вы могли иметь эту таблицу БД и использовать ее.

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>

Вместо

h:/VR-Analyse-Tool_Excel Output

Использовать

/home/VR-Analyse-Tool_Excel Output

Создайте

h:/home

Каталог на вашем локальном компьютере, и он должен работать в обеих средах.

Добавьте свой путь к файлу в web.xml при развертывании в Windows file(h:your_filepath) , Unix (home/your_filepath)

Паутина.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;
}