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

时间:2015-04-11 17:56:26

标签: java java.util.scanner

我遇到了错误:

    error: no suitable constructor found for File(File)
            File file = new File(testFile);
                        ^
constructor File.File(String,int) is not applicable
  (actual and formal argument lists differ in length)
constructor File.File(String,File) is not applicable
  (actual and formal argument lists differ in length)
constructor File.File(String) is not applicable
  (argument mismatch; File cannot be converted to String)
constructor File.File(String,String) is not applicable
  (actual and formal argument lists differ in length)
constructor File.File(File,String) is not applicable
  (actual and formal argument lists differ in length)
constructor File.File(URI) is not applicable
  (argument mismatch; File cannot be converted to URI)

我不明白错误告诉我的是什么,有人可以解释一下吗? 这是我的代码:

    public ShortenWord( File testFile ) {
    try {
        File file = new File(testFile);
        Scanner in = new Scanner(file);

        List originalWords = new List();
        List abbWords = new List();

        while (in.hasNextLine())
        {
            String line = in.nextLine();
            String[] parts = line.split(",");
            String originalWord = parts[0];
            String abbWord = parts[1];
        }
    }
catch (FileNotFoundException e)
    {
        System.out.println(e);
    }
}

如何解决此错误的任何帮助将不胜感激。因为我没有线索 :)

3 个答案:

答案 0 :(得分:3)

文件构造函数期望文件路径名为单个参数的字符串。你不应该在File构造函数中传递另一个文件对象。

File file = new File("somefilename.txt");

答案 1 :(得分:2)

File类没有带File参数的构造函数(也称为复制构造函数)。

如果您已将File传递给ShortenWord构造函数,只需使用它而不是尝试创建新的File

public ShortenWord( File testFile ) {
  try {
    Scanner in = new Scanner(testFile);

    List originalWords = new List();
    List abbWords = new List();

    while (in.hasNextLine())
    {
        String line = in.nextLine();
        String[] parts = line.split(",");
        String originalWord = parts[0];
        String abbWord = parts[1];
    }
  }
  catch (FileNotFoundException e)
  {
      System.out.println(e);
  }
}

答案 2 :(得分:1)

检查Javadoc:http://docs.oracle.com/javase/7/docs/api/java/io/File.html

有4个构造函数,它们都没有将File作为参数:

File(File parent, String child)
Creates a new File instance from a parent abstract pathname and a child pathname string.
File(String pathname)
Creates a new File instance by converting the given pathname string into an abstract pathname.
File(String parent, String child)
Creates a new File instance from a parent pathname string and a child pathname string.
File(URI uri)
Creates a new File instance by converting the given file: URI into an abstract pathname.

尝试使用String作为参数。