尝试编译程序时出错

时间:2011-07-06 12:34:00

标签: java io filereader filewriter

我正在尝试运行从Sun Java站点获取的代码(我没有复制它,查看它并编写它,因为它可以帮助我记住代码)。

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CharEx{
    FileReader inputStream = null;
        FileWriter outputStream = null;

    public static void main(String args[]) throws IOException{
        FileReader inputStream = null;
        FileWriter outputStream = null;

        try{
            inputStream = FileReader("xanadu.txt");
            outputStream = FileWriter("out.txt");
            int c;
            while ((c = inputStream.read()) != -1){
                outputStream(c);
            } 
        }
        finally{
            if(inputStream !=null){
                inputStream.close();
            }
            if(outputStream !=null){
                outputStream.close();
            }

        }
    }
}

但是我遇到了错误。

D:\Java>javac CharEx.java
CharEx.java:14: cannot find symbol
symbol  : method FileReader(java.lang.String)
location: class CharEx
                        inputStream = FileReader("xanadu.txt");
                                      ^
CharEx.java:15: cannot find symbol
symbol  : method FileWriter(java.lang.String)
location: class CharEx
                        outputStream = FileWriter("out.txt");
                                       ^
CharEx.java:18: cannot find symbol
symbol  : method outputStream(int)
location: class CharEx
                                outputStream(c);
                                ^
3 errors

从消息中我认为系统正在FileReader内寻找java.lang,而它应该在java.io.*内找到它:((

有人可以在我出错的地方帮助我吗?

PS:我使用的是JDK 1.5。

2 个答案:

答案 0 :(得分:8)

您正在尝试实例化FileReaderFileWriter(即创建这些类型的对象)。

为此,您需要使用new关键字:

inputStream = new FileReader("xanadu.txt");
outputStream = new FileWriter("out.txt");

通过省略new代码看起来像一个方法调用,因此编译器会查找名为FileReader(和FileWriter)的方法并且找不到它,它就是用一种有点奇怪但令人惊讶的语言告诉你。

提示:“符号”是编译器称之为“名称”的内容。该名称可以是类,方法,变量......在检查“符号:”行时可以找到确切的问题。它告诉您编译器会查找名为FileReader方法,它带有String参数:

CharEx.java:14: cannot find symbol
symbol  : method FileReader(java.lang.String)

答案 1 :(得分:3)

初始化读写器时,您缺少new关键字。

inputStream = new FileReader("xanadu.txt");
outputStream = new FileWriter("out.txt");

你也错过了这一行:

outputStream(c);

你想写那里的输出流吗?那你应该试试这个:

outputStream.write(c);