1

我正在尝试运行从 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 上。

4

2 回答 2

8

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

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

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

通过省略new代码看起来像一个方法调用,所以编译器寻找一个名为FileReader(and FileWriter) 的方法并没有找到它,它用一种有点奇怪但令人惊讶的清晰语言告诉你。

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

CharEx.java:14:找不到符号
符号:方法 FileReader(java.lang.String)
于 2011-07-06T12:35:50.623 回答
3

new初始化读取器和写入器时缺少关键字。

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

你也错过了这一行的一些东西:

outputStream(c);

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

outputStream.write(c);
于 2011-07-06T12:39:18.620 回答