RandomAccessFile — система не может найти указанный путь

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

Это мой RandomAccessFile:

RandomAccessFile dat = new RandomAccessFile("training\\"+lastTraining+".dat","rw");

Это не работает. Он возвращает мне «Система не может найти указанный путь». Теперь у меня нет ни папки, ни файла, потому что я хочу, чтобы программа их создала. Что я делаю не так? Я уже пробовал все виды косых черт в пути, но ничего не работает.

Спасибо!


person DownbeatTax    schedule 09.11.2017    source источник
comment
Сначала нужно создать папку. RandomAccessFile создает файл только в существующем каталоге.   -  person vanje    schedule 09.11.2017
comment
@DownbeatTax понял, что вы можете не видеть комментарий, который я добавил к своему удаленному ответу. Конструктор RandomAccessFile завершится ошибкой с несуществующим файлом только в том случае, если выбрана только опция чтения — он фактически создаст его, если присутствует опция записи. Я подозреваю, что комментарий Ванье - хороший способ начать. Возможно, также убедитесь, что вы действительно можете создать файл по этому пути другими способами.   -  person Mena    schedule 09.11.2017
comment
@vanje создание папки не работает. Я попробовал несколько вариантов, в том числе выйти из текущей папки (src) и сохранить там файл, но безуспешно. Я использовал этот путь: ..\\trainings\\+lastTraining+.dat Я думаю, что мне что-то не хватает, чтобы установить его в относительный каталог.   -  person DownbeatTax    schedule 09.11.2017


Ответы (1)


Вы пробовали пройти полный путь? Например: вместо «training\file.dat» выполните (Windows) "C:/path/to/file/file.dat" (Unix) "/path/to/file/file.dat" Изменить: обратите внимание, что папки, в которые вы пытаетесь поместить файл, должны существовать заранее, так как RandomAccessFile не создаст их и выдаст FileNotFoundException

person TCramer    schedule 09.11.2017
comment
Да, это работает. :D Но могу ли я использовать относительные пути? - person DownbeatTax; 09.11.2017
comment
Вы можете попробовать String path = System.getProperty("user.dir"); - person TCramer; 09.11.2017
comment
Попробуйте выполнить отладку.... System.out.println(new File(.).getAbsolutePath()); Это должно указать вам путь. - person Tim Strawbridge; 09.11.2017
comment
@TimCramer Это работает! Это обходной путь, но отличный обходной путь. Спасибо! - person DownbeatTax; 09.11.2017