Как говорится в вопросе, я пытаюсь получить значение пути, используя JFileChooser. Возврат из JFileChooser ставит передо мной две проблемы. Во-первых, точная природа того, что я делаю, заключается в том, чтобы позволить пользователю выбрать каталог, а затем переименовать все файлы определенного типа, например, все файлы .pdf в этой папке, оставив все остальные файлы в покое. Проблемы, которые у меня возникают с JFileChooser в этом отношении, двоякие:
1) Я понял, как позволить JFileChooser показывать файлы внутри каталога, но не позволять пользователю выбирать файл конкретно. Однако возвращаемое значение строки не включает текущий просматриваемый каталог внутри JFileChooser, когда нажимается «Открыть». Например, если пользователь переходит к C:\Documents and Settings\myFolder\Documents\Work и видит содержимое рабочего каталога, а затем нажимает «Открыть», строка, возвращаемая вызовом getAbsolutePath(), будет «C:\Documents и Setting\myFolder\Documents" "Работа" никогда не возвращается. Как я могу получить это, чтобы быть представленным в конечном результате?
2) Когда у меня есть эта строка, как мне преобразовать ее в путь, чтобы я мог работать с файлами внутри нее? «\» — это экранирование Java, и чтобы использовать путь к файлу в качестве действительного значения пути, его необходимо экранировать, т. е. «C:\Documents and Settings\myFolder» не работает, это должно быть «C:\Documents и Настройки\моя папка". Как мне получить из строки возврата с одинарной косой чертой () из JFileChooser путь с двойной косой чертой (\), который мне нужен?
Я знаю, что ответ, скорее всего, прост, просто я больше привык иметь дело с Linux, где с этим проблем нет. Я только что получил свою первую работу, используя свои навыки программирования, и, конечно же, все работает под Windows.
И прежде чем кто-то предложит, да, я знаю, что использование «/» будет работать для относительных путей, но для приложения, которое я пишу, мне нужно использовать абсолютные пути, поскольку эти файлы могут быть на хост-компьютере или на сетевом диске, поэтому я не могу использовать относительное имя, если только я не упускаю из виду что-то из-за отсутствия большого опыта сетевого программирования.
Я благодарю вас всех за ваше время в чтении, если не ответить на это.
Томми Матерн