Выбор txt файла из любого места с помощью File Chooser в Java - PullRequest
0 голосов
/ 21 июня 2011

Я использовал Sun File Chooser Demo , чтобы выбрать файлы с моего рабочего стола или из любого места.

Я добавил следующий код в действие открытия файла:

if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = fc.getSelectedFile();
                log.append("Opening: " + file.getName() + "." + newline);
                ReadData rd = new ReadData();  //added by me
                rd.readData(file.getName());   //added by me
            } else {
                log.append("Open command cancelled by user." + newline);

Класс ReadData содержит метод readData, который принимает имя файла и с помощью BufferedReader будет читать содержимое файла построчно.

Но после выбора файла с помощью средства выбора файлов он не может открыть файл с моего рабочего стола. Если я помещаю файл в папку проекта, он может открыть файл без изменения кода. Какие изменения в коде мне нужно сделать, чтобы он мог выбрать и открыть файл из любого места? Спасибо

Ответы [ 4 ]

4 голосов
/ 21 июня 2011

Вы передаете только имя файла, а не полный путь вашему классу ReadData. Итак, ваш ReadData класс не будет знать, в каком каталоге находится файл - он попытается найти его в текущем каталоге (каким бы он ни был в данный момент).

Вместо того, чтобы просто передавать имя файла, передайте весь путь:

rd.readData(file.getPath());

Еще лучше, измените метод ReadData.readData(), чтобы он принимал File вместо String, и передайте ему объект File, который вы получите от средства выбора файлов:

rd.readData(file);
1 голос
/ 21 июня 2011

используйте объект файла, чтобы открыть входящий поток, вместо этого используя его имя.например:

BufferedReader br = new BufferedReader(new FileInputStream(file));

измените метод readData так, чтобы он принимал объект File вместо String, и используйте этот объект для открытия BufferedReader.

1 голос
/ 21 июня 2011

Вы передаете только имя файла методу readData ().

Итак, если ваш файл хранится в C: \ Users \ JavaBits \ Project \ Java \ file.txt, ваш метод readData () получает только file.txt, поэтому он не может найти файл.Вы должны сделать это:

rd.readData(file);

Это будет относительный путь в нем.

1 голос
/ 21 июня 2011

getName() получает только последний сегмент файла без какой-либо информации о пути. Если рабочий каталог вашего Java-приложения не является точным каталогом, в котором находится этот файл, это не сработает.

Почему ваш ReadData просто не берет файл? Все механизмы ввода файлов, встроенные в Java, принимают File (например, FileInputStream, FileReader). В противном случае используйте getPath() Я думаю.

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