Java编译错误 - 没有合适的构造函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java编译错误 - 没有合适的构造函数相关的知识,希望对你有一定的参考价值。

我是Java游戏的新手,我试图让用户选择一个目录,并以递归方式搜索和打印所述目录的内容。

我的代码给了我错误:

找不到合适的文件(文件)构造函数

在这条线上

File[] files = new File(chooser.getSelectedFile()).listFiles();

这里有人会成为一个宝石,并帮助我找到实现我想要的结果的正确语法吗?这是我的完整代码:

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                
    chooser = new JFileChooser(); 
    chooser.setCurrentDirectory(new java.io.File("."));
    chooser.setDialogTitle(choosertitle);
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    // disable the "All files" option.
    chooser.setAcceptAllFileFilterUsed(false);
    //    
    if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { 
        File[] files = new File(chooser.getSelectedFile()).listFiles();
    } else { System.out.println("No Selection "); }
}                                        


public static void showFiles(File[] files) {
    for (File file : files) {
        if (file.isDirectory()) {
            System.out.println("Directory: " + file.getName());
            showFiles(file.listFiles()); 
        } else {
            System.out.println("File: " + file.getName());
        }
    }
}
/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Find().setVisible(true);
        }
    });
}
答案

chooser.getSelectedFile()已经返回File,所以你可以直接在其返回值上调用listFiles()

File[] files = chooser.getSelectedFile().listFiles();
另一答案

不确定是什么chooser.getSelectedFile()。listFiles()正在返回,但这可能有用

File[] files = chooser.getSelectedFile().listFiles();
另一答案

chooser.getSelectedFile()返回一个文件对象(https://docs.oracle.com/javase/7/docs/api/javax/swing/JFileChooser.html#getSelectedFile())。您已经获得了一个文件对象。不需要将它作为参数传递给File构造函数(这样的构造函数不存在(https://docs.oracle.com/javase/7/docs/api/java/io/File.html))。

listFiles()方法列出了目录的所有文件(该目录是您调用该方法的对象)(参见:https://docs.oracle.com/javase/7/docs/api/java/io/File.html#listFiles()

我想你的意思应该是:chooser.getSelectedFile().listFiles()

以上是关于Java编译错误 - 没有合适的构造函数的主要内容,如果未能解决你的问题,请参考以下文章

Room 不能选择一个构造函数,因为多个构造函数是合适的错误

C++ 没有合适的默认构造函数(无参数构造函数)

错误 C2512:'Building':没有合适的默认构造函数可用

错误 C2512:没有合适的默认构造函数可用(不是类)

使用模板时缺少默认构造函数

复制构造函数没有合适的默认构造函数