Получение значения пути из JFileChooser в Windows XP

Как говорится в вопросе, я пытаюсь получить значение пути, используя 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.

И прежде чем кто-то предложит, да, я знаю, что использование «/» будет работать для относительных путей, но для приложения, которое я пишу, мне нужно использовать абсолютные пути, поскольку эти файлы могут быть на хост-компьютере или на сетевом диске, поэтому я не могу использовать относительное имя, если только я не упускаю из виду что-то из-за отсутствия большого опыта сетевого программирования.

Я благодарю вас всех за ваше время в чтении, если не ответить на это.

Томми Матерн


person TMatherne    schedule 21.07.2012    source источник


Ответы (1)


1. Чтобы получить полный путь к выбранному каталогу, сделайте следующее:

Здесь myJfc есть instance of JFileChoooser здесь

String path =  myJfc.getSelectedFile().getAbsolutePath().toString();

2. Преобразуйте строку в путь, используя это:

Используйте "\\" вместо "\" в пути.

ie. C:\\Documents and Settings\\myFolder

Убедитесь, что у вас есть права на диск C:, иначе ваш файл не будет создан там. Если у вас нет прав на создание файла на диске C:, попробуйте другой диск, который вы есть как D:, E: и т. д. У вас не будет проблем с привилегиями.

File f = new File(path);
person Kumar Vivek Mitra    schedule 21.07.2012
comment
Хорошо, я думаю, я был немного двусмысленным. Я пытаюсь установить переменную типа Path в переменную, чтобы я мог получить содержимое всей папки в ArrayList для дальнейшей работы. Моя проблема заключается в попытке установить переменную Path с возвращаемой строкой. Возвращаемая строка содержит одиночные косые черты, а не требуемые двойные косые черты, и простая замена не работает, поскольку косая черта в путях к файлам Windows является экранирующими символами в Java. Как получить эти двойные косые черты? Спасибо. - person TMatherne; 23.07.2012
comment
Неважно. Облако глупости исчезло с простудой, которая у меня была. Я понял, что вы сказали. Еще раз спасибо. - person TMatherne; 26.07.2012