Этот статья , наделенная правом "Стандарт IEEE, 754 Числа с плавающей точкой" могут быть полезными. Чтобы быть честным, я не абсолютно уверен, что понимаю Ваш вопрос, таким образом, я не уверен, что это будет полезным, но я надеюсь, что это будет.
Если он помещен в путь к классам веб-приложения, просто используйте:
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
.
Вы можете использовать Resource Bundle . Я использую их для поиска файлов свойств. Я считаю, что каталог просто должен быть в пути к классам, и ResourceBundle его найдет.
Это зависит от языка.
Тексты на 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 ()