import java.io.*;
public class Streams {
public static void main(String[] args) {
File homedir = new File(System.getProperty("user.home"));
File is = new File(homedir, "java/in.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
int value = 0;
while ((value=br.read())!=-1) {
char c = (char) value;
System.out.println(c);
}
}
}
在编译上述程序时,我收到的错误就是这样
Streams.java中的错误(第7行)BufferedReader br = new BufferedReader(new InputStreamReader(is)); ^^^^^^^^^^^^^^^^^^^^^^^^^
构造函数InputStreamReader(File)未定义
请帮我解决这个问题我正在使用java 1.7.0_51
版本,OS linux Deepin
提前致谢
答案 0 :(得分:3)
您使用Java 7吗?
然后:
Files.newBufferedReader(Paths.get(System.getProperty("home.dir")
.resolve("java/in.txt")), StandardCharsets.UTF_8);
您使用的是Java 7吗?完全删除File
。请参阅Files
,Paths
,FileSystems
等等。
(编辑:并使用try-with-resources语句;有关详细信息,请参阅@ JonSkeet的答案)
答案 1 :(得分:2)
是的,这是对的。查看documentation for InputStreamReader
,您将找不到采用File
参数的构造函数。
相反,您应该构造一个FileInputStream
来从文件中读取,然后将 传递给InputStreamReader
的构造函数。您还应该指定要使用的编码,否则它将使用平台默认编码。
另请注意:
File
变量命名为is
- 这听起来更像是您希望它是InputStream
。例如:
File file = new File(homedir, "java/in.txt");
try (BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(file), StandardCharsets.UTF_8))) {
int value = 0;
while ((value = br.read()) != -1) {
char c = (char) value;
System.out.println(c);
}
}
(或根据fge的回答使用Files
API。)
答案 2 :(得分:1)
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(is)));
它应该工作。