2016-10-12 7 views
0

Я провел довольно много исследований, но не нашел никого с подобной проблемой.tomcat 8.0.27 и System.getProperty («file.separator»)

pathSeparator=System.getProperty("file.separator"); 

Я получаю файл seperator ("/" или "\") с помощью этой функции.

theFile = new java.io.File(this.getServletContext().getRealPath(pathSeparator+"EXAMPLE"+pathSeparator+"EXAMPLE1"+pathSeparator+"EXAMPLE2"+pathSeparator + EXAMPLE3+ ".example")); 

Приведенный выше код должен getRealPath из следующей строки:

\EXAMPLE\EXAMPLE1\EXAMPLE2\EXAMPLE3.example 

, который он делает, но переменная theFile устанавливается в нуль после исполнения кода. Если я установил pathSeperator в «/», то значение параметра File не равно null, и оно работает так, как должно. Любые идеи почему?

+0

Является ли это только копия ошибок в вопросе, или это действительно PathSep ** e ** rator и PathSep ** a ** rator? –

+0

@ piet.t да копия-ошибка. Я написал это вручную и неправильно понял. Теперь исправлено. – Kristjan

+0

Хмм, не вижу, как 'theFile' может когда-либо быть нулевым после' theFile = new File (...) ', если не возникло исключение. – Henry

ответ

1

Прочтите документацию ServletContext(). GetRealPath.

Этот метод возвращает null, если он не может преобразовать путь к реальному пути.

Java и сервлеты, в частности, используют "/" как разделитель путей для их обозначения виртуального пути. Это справедливо даже в системах Windows.

Таким образом, используя «\» не имеет никакого значения в Servlet контексте, и вы получите нулевой из ServletContext(). GetRealPath, если вы используете что

+0

Спасибо за ваш комментарий. Поначалу я так и думал. Но я попробовал запустить программу на разных компьютерах, и проблема только на моем. Я подозреваю, что это версия сервера tomcat. Попробуй по другой версии и опубликуйте мои результаты. – Kristjan