我如何定义构造函数?

时间:2011-11-24 00:09:45

标签: java

import java.io.File;
import java.io.InputStreamReader;
import java.io.BufferedReader;

public class Rec{
  public void txtMod(){
    File fileName = new File ("C:\\work\\imput.txt");
    BufferedReader in = new BufferedReader (new InputStreamReader(fileName));
    ...
  }
}

new InputStreamReader(fileName)带有以下错误的下划线:'构造函数InputStreamReader(File)未定义'。我该如何定义它? new不定义它吗?

4 个答案:

答案 0 :(得分:8)

这不是构建InputStreamReader的有效参数。您需要创建InputStream并将其传递给InputStreamReader。

BufferedReader in = new BufferedReader (
                        new InputStreamReader(
                            new FileInputStream(fileName)));

但是,最好的方法是使用FileReader

Reader in = new FileReader(fileName)

答案 1 :(得分:2)

你搞砸了一下你的条款。 new 实例化一个类。它没有定义任何东西。

您的错误是由InputStreamReader的构造函数没有String引起的。但是,FileInputStream确实可以将生成的流传递给InputStreamReader

答案 2 :(得分:1)

InputStreamReader不在构造函数中使用File。见:http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html。你想要的可能是FileInputStream。

答案 3 :(得分:1)

在Constructor Summary下,没有构造函数接受参数File。

http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html

您可能想要使用

new InputStreamReader( new FileInputStream( fileName ) )