Почему File.separator использует неправильный символ?

Я пытаюсь добавить функциональность в большой кусок кода, и у меня странная проблема с разделителями файлов. При чтении файла в следующем коде работает на моем компьютере, но не работает, когда на сервере Linux. Когда на ПК я передаю это, и это работает:

fileName = "C:\\Test\\Test.txt";

Но когда я на сервере, я передаю это и получаю "Файл не найден", потому что инструкция BufferedReader/FileReader ниже меняет "/" на "\":

fileName = "/opt/Test/Test.txt";
System.out.println("fileName: "+fileName);
reader = new BufferedReader(new FileReader(new File(fileName)));

Создает этот вывод при запуске на сервере LINUX:

fileName: /opt/Test/Test.txt

Файл не найден: java.io.FileNotFoundException: \opt\Test\Test.txt (система не может найти указанный путь)

Когда я создаю простой файл Test.java, чтобы попытаться воспроизвести его, он ведет себя так, как ожидалось, поэтому что-то в более крупном коде приводит к тому, что строка BufferedReader/FileReader ведет себя так, как если бы он находился на ПК, а не в Linux. Есть идеи, что это может быть?

1 ответ

Я не вижу, где вы использовали File.separator. Попробуйте это вместо жесткого кодирования разделителей пути.

fileName = File.separator + "opt" + File.separator + "Test" + File.separator + "Test.txt";
Другие вопросы по тегам