开发者

Writing 'getSelectedFile' as a String (Java)

开发者 https://www.devze.com 2023-02-10 18:34 出处:网络
open.addActionListener(new ActionListene开发者_如何转开发r(){ public void actionPerformed (ActionEvent e){
    open.addActionListener(new ActionListene开发者_如何转开发r(){
        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());
                }
        }
    });

This might be a badly worded question but here we go:

I need this part of my code to produce 'fileChooser.getSelectedFile());' in a format that can be used elsewhere. I don't mind if it is a variable (won't really work because I need to call it in another actionListener) or (as I planned) output the selected folder as a string to an output file and then read that file in elsewhere in the program.

It's important that the file path (e.g. C:/Users/Desktop/) be a String because that is what the class which will use the path takes in.

I've tried a couple of options but often get the "inconvertable types' compile error etc, if anyone has any ideas they would share, that'd be great


JFileChoose.getSelectedFile() returns a File object, not a String object.

The File object has methods like getAbsolutePath(), getPath(), getName(), getParent() that return string versions of the file name and path.

So something like:

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

Should get you what you want.

Also FYI, this doesn't compile ...

String exportPath = fileChooser.getSelectedFile();

... because the File object returned by getSelectedFile() is not a String object. However, the File object (like all objects) has a toString() method which gets called automatically to build the string when you did this ...

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

The elegant way would be, as I said, something like this:

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

Hope this helps, good luck! Rob


There are few possibilities to do that:

// 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();


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){
                }
                }
        }
    });

Seems to fix it. Sorry to post and answer my own question. Figured out how to do it whilst I was waiting for replies. Seems like to be a string 'exportPath' has to have a string in it. In this case "\" but it can also be "" too.

No idea why but there you go :D

0

精彩评论

暂无评论...
验证码 换一张
取 消