У меня есть проект с 2 пакетами:
tkorg.idrs.core.searchengines
tkorg.idrs.core.searchengines
В пакете (2) у меня есть текстовый файл ListStopWords.txt
, в пакете (1) есть класс FileLoadder
. Вот код в FileLoader
:
File file = new File("properties\\files\\ListStopWords.txt");
Но есть эта ошибка:
The system cannot find the path specified
Можете дать решение исправить? Спасибо.
properties.files
для2
?Ответы:
Если он уже находится в пути к классам, просто получите его из пути к классам, а не из файловой системы диска. Не возитесь с относительными путями
java.io.File
. Они зависят от текущего рабочего каталога, которым вы не можете управлять изнутри кода Java.Предполагая, что он
ListStopWords.txt
находится в том же пакете, что и вашFileLoader
класс, выполните:Или, если все, что вам нужно, на самом деле является одним
InputStream
из них:Это, безусловно, предпочтительнее, чем создание,
new File()
потому что онurl
может не обязательно представлять путь к файловой системе диска, но он также может представлять путь к виртуальной файловой системе (что может произойти, когда JAR расширяется в память, а не во временную папку в файловой системе диска) или даже сетевой путь, которые по определению не могут быть усвоеныFile
конструктором.Если файл - как подсказывает имя пакета - на самом деле является файлом полноценных свойств (содержащим
key=value
строки) только с «неправильным» расширением, то вы можетеInputStream
немедленно передать егоload()
методу.Примечание: когда вы пытаетесь получить к нему доступ из внутреннего
static
контекста, используйтеFileLoader.class
(или что-то ещеYourClass.class
) вместоgetClass()
приведенных выше примеров.источник
FileLoader
это собственный класс OP. Это должен быть именно тот класс, в котором вы пытаетесь получить ресурс. Итак, такNameOfYourCurrentClass.class.getResourceAsStream(...)
. ОшибкаClassLoader.class
завершится ошибкой, еслиClassLoader
класс загружается другим загрузчиком классов, что может произойти в «корпоративном» приложении с иерархией из нескольких загрузчиков классов (например, веб-приложение Java EE).Следующая строка может использоваться, если мы хотим указать относительный путь к файлу.
источник
InputStream
?InputStream is = new FileInputStream("./properties/files/ListStopWords.txt");
Относительный путь работает в java с использованием. оператор.
Итак, вопрос в том, как узнать путь, по которому сейчас ищет java?
провести небольшой эксперимент
Наблюдайте за выводом, вы узнаете текущий каталог, в котором ищет java. Оттуда просто используйте оператор ./, чтобы найти файл.
например, если вывод
и ваш файл находится в папке MyProject, просто используйте
Надеюсь это поможет
источник
источник
.class
литерал, только указав полное имя его класса.пытаться
.\properties\files\ListStopWords.txt
источник
Я мог бы прокомментировать, но у меня меньше репутации для этого. Ответ Самрата помог мне. Лучше увидеть текущий путь к каталогу с помощью следующего кода.
Я просто использовал его, чтобы исправить проблему, с которой я столкнулся в своем проекте. Обязательно используйте ./, чтобы вернуться в родительский каталог текущего каталога.
источник
Хотя ответ, предоставленный BalusC, работает в этом случае, он сломается, если путь к файлу содержит пробелы, потому что в URL-адресе они преобразуются в% 20, которое не является допустимым именем файла. Если вы создаете объект File, используя URI, а не String, пробелы будут обрабатываться правильно:
источник
Я хотел разобрать command.json внутри src / main // js / Simulator.java. Для этого я скопировал файл json в папку src и указал абсолютный путь следующим образом:
источник
Предполагая, что вы хотите читать из
resources
каталога вFileSystem
классе.Примечание: интерлиньяж
.
не нужен.источник
Для меня на самом деле проблема в том, что путь к классу объекта File находится
<project folder path> or ./src
, поэтому использованиеFile file = new File("./src/xxx.txt");
решило мою проблемуисточник
String basePath = новый файл ("myFile.txt"). GetAbsolutePath (); этот базовый путь вы можете использовать как правильный путь к вашему файлу
источник
Если вы пытаетесь вызвать
getClass()
из статического метода или статического блока, вы можете сделать следующее.Вы можете позвонить
getClass()
наProperties
объект , который вы загружаете в.источник
Если текстовый файл не читается, попробуйте использовать более точный абсолютный путь (если хотите, вы можете использовать полный абсолютный путь), например:
предположим, что абсолютный путь:
источник