Запись getSelectedFile в виде строки (Java) - PullRequest
1 голос
/ 13 февраля 2011
    open.addActionListener(new ActionListener(){
        public void actionPerformed (ActionEvent e){
            JFileChooser fileChooser = new JFileChooser();
            fileChooser.setCurrentDirectory(new java.io.File("."));
            fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

            if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
                System.out.println(fileChooser.getSelectedFile());
                }
        }
    });

Это может быть плохо сформулированный вопрос, но здесь мы идем:

Мне нужна эта часть моего кода для создания 'fileChooser.getSelectedFile ());' в формате, который можно использовать в другом месте. Я не против, если это переменная (на самом деле не будет работать, потому что мне нужно вызвать ее в другом actionListener) или (как я планировал) вывести выбранную папку в виде строки в выходной файл, а затем прочитать этот файл в другом месте в программе.

Важно, чтобы путь к файлу (например, C: / Users / Desktop /) был строкой, потому что это то, что принимает класс, который будет использовать этот путь.

Я пробовал несколько вариантов, но часто получаю ошибку компиляции «необратимых типов» и т. Д., Если у кого-то есть какие-либо идеи, которыми они поделятся, это было бы замечательно

Ответы [ 3 ]

2 голосов
/ 13 февраля 2011

JFileChoose.getSelectedFile () возвращает объект File, а не объект String.

Объект File имеет такие методы, как getAbsolutePath (), getPath (), getName (), getParent (), которые возвращают строковые версии имени файла и пути.

Так что-то вроде:

File file = fileChooser.getSelectedFile();
System.out.println("Selected file is: "+file.getAbsolutePath()+"/"+file.getName());

Должен получить то, что вы хотите.

Также к вашему сведению, это не компилируется ...

String exportPath = fileChooser.getSelectedFile();

... потому что объект File, возвращаемый getSelectedFile (), не является объектом String. Тем не менее, объект File (как и все объекты) имеет метод toString (), который вызывается автоматически для создания строки, когда вы это делаете ...

String exportPath = fileChooser.getSelectedFile() +"\\";

Элегантный способ был бы, как я сказал, примерно таким:

String exportPath = fileChooser.getSelectedFile().getAbsolutePath();

Надеюсь, это поможет, удачи! Rob

1 голос
/ 13 февраля 2011

Есть несколько возможностей сделать это:

// just path as a String
fileChooser.getSelectedFile().getPath();
// the same, this is done implicitly in your answer
fileChooser.getSelectedFile().toString();
// absolute path, if you need it
fileChooser.getSelectedFile().getAbsolutePath();
// canonical path, not sure what that is
fileChooser.getSelectedFile().getCanonicalPath();
1 голос
/ 13 февраля 2011
open.addActionListener(new ActionListener(){
        public void actionPerformed (ActionEvent e){
            JFileChooser fileChooser = new JFileChooser();
            fileChooser.setCurrentDirectory(new java.io.File("."));
            fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

            if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
                try{
                DataOutputStream outputPath = new DataOutputStream(new FileOutputStream("C:/Users/Jonathan/Desktop/YouDetectJava/FolderPath.dat"));
                String exportPath = fileChooser.getSelectedFile() + "\\";
                outputPath.writeUTF(exportPath);
                //System.out.println(exportPath);
                }catch (IOException ioe){
                }
                }
        }
    });

Кажется, это исправить. Извините, что опубликовать и ответить на мой собственный вопрос. Разобрался, как это сделать, пока я ждал ответов. Похоже, что это строка 'exportPath' должна содержать строку. В этом случае "\", но также может быть и "".

Понятия не имею, почему, но вы идете: D

...