Как можно считать текстовый файл в приложении Struts 2 [дубликат]

Этот статья , наделенная правом "Стандарт IEEE, 754 Числа с плавающей точкой" могут быть полезными. Чтобы быть честным, я не абсолютно уверен, что понимаю Ваш вопрос, таким образом, я не уверен, что это будет полезным, но я надеюсь, что это будет.

7
задан BalusC 31 March 2016 в 14:56
поделиться

4 ответа

Если он помещен в путь к классам веб-приложения, просто используйте:

InputStream input = servletContext.getResourceAsStream("file.txt");

Если он помещен в глобальный путь к классам, используйте:

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("file.txt");

Если он помещен в веб-контент, тогда просто используйте:

InputStream input = new FileInputStream(servletContext.getRealPath("file.txt"));

В примерах предполагается, что они помещаются в корень. Конечно, вы можете использовать относительный путь вместо корневого пути к классам или корневого каталога веб-содержимого, например путь / к / file.txt . Вы можете получить ServletContext в Struts с помощью ServletActionContext # getServletContext () .

Изменить: Вы отредактировали свой вопрос следующим образом:

EDIT: Спасибо, ребята, за ответ. Для меня сработало это:

 String path = GetPointsOfInterestAction.class.getResource ("../../../ resources / visitor_attractions.txt")

Не могли бы вы объяснить, почему

На самом деле это не «правильный» путь, но это тоже выполнимо. Вам нужно только убедиться, что вы знаете относительный относительный путь к файлу в отличие от фактического пути класса GetPointsOfInterestAction . Этот класс, конечно, помещен в другой пакет, поэтому вам, по сути, нужно вернуть каталог назад (как в обычных дисковых файловых системах: cd ../ и т. Д.). Опять же, это не самый элегантный способ. Вам необходимо использовать один из первых двух вышеупомянутых способов с именем ресурса resources / visitor_attractions.txt .

10
ответ дан 6 December 2019 в 10:51
поделиться

Здесь

ServletActionContext.getServletContext ()

Похоже, вы знаете, что оттуда делать.

3
ответ дан 6 December 2019 в 10:51
поделиться

Вы можете использовать Resource Bundle . Я использую их для поиска файлов свойств. Я считаю, что каталог просто должен быть в пути к классам, и ResourceBundle его найдет.

3
ответ дан 6 December 2019 в 10:51
поделиться

Это зависит от языка.

Тексты на C ++ часто предлагают второй формат, поскольку он будет работать с итераторами, которые можно сравнивать (! =) Напрямую, но не с условием больше или меньше чем . Также предварительное приращение может быть быстрее, чем последующее приращение, поскольку нет необходимости в копии переменной для сравнения - однако оптимизаторы могут с этим справиться.

Для целых чисел работает любая форма. Обычная идиома для C - первая, а для C ++ - вторая.

Для C # и Java я бы использовал foreach, чтобы перебирать все вещи.

В C ++ также есть std :: struts2.util.ClassLoaderUtils . Из документации по java:

Этот класс чрезвычайно полезен для отказоустойчивой загрузки ресурсов и классов, которая работает на разных серверах приложений.

Обратите особое внимание на статический метод ClassLoaderUtils.getResourceAsStream (String resourceName, Class callClass) , который является удобным методом для загрузки ресурса в виде потока. Как указано в документации, алгоритм, используемый для поиска ресурса, приведен в getRessource () :

Этот метод попытается загрузить Класс callClass) статический метод, который является удобным методом для загрузки ресурса в виде потока. Как указано в документации, алгоритм, используемый для поиска ресурса, приведен в getRessource () :

Этот метод попытается загрузить Класс callClass) статический метод, который является удобным методом для загрузки ресурса в виде потока. Как указано в документации, алгоритм, используемый для поиска ресурса, приведен в getRessource () :

Этот метод попытается загрузить ресурс, используя следующие методы (по порядку):

  • Из Thread.currentThread (). getContextClassLoader ()
  • Из ClassLoaderUtil.class.getClassLoader ()
  • Из вызывающегоClass.getClassLoader ()
2
ответ дан 6 December 2019 в 10:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: