我正在尝试运行从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。
答案 0 :(得分:8)
您正在尝试实例化FileReader
和FileWriter
(即创建这些类型的对象)。
为此,您需要使用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);