0
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构造InputStreamReader的(文件)是未定义

ERROR(在第7行)的BufferedReader峰br =新 的BufferedReader(新的InputStreamReader (是)); ^^^^^^^^^^^^^^^^^^^^^^^^^

构造的InputStreamReader(文件)是未定义


好心帮我出这个问题,我使用的Java版本1.7.0_51,提前

回答

1

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(is))); OS linux Deepin

感谢,它应该工作。

+0

没有任何反应先生 – Selva

+0

而你仍然得到了同样的异常? – Antoniossss

+0

同时编译你的方式我得到FileNotFound和IOexception先生 – Selva

2

是的,这是非常正确的。看看documentation for InputStreamReader,你不会找到一个参数为File的构造函数。

相反,你应该建立一个FileInputStream从文件中读取,并通过InputStreamReader的构造。您还应指定要使用的编码,否则将使用平台默认编码。

还要注意:

  • 你应该使用try-与资源语句来关闭自动资源
  • 我不会命名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); 
    } 
} 

(或使用Files API按FGE的答案。)

+0

@Selva:“我得到错误”并没有告诉我们有关错误的信息。如果是因为编译器找不到'StandardCharsets',那是因为你需要导入它(例如,'import java.nio.charset.StandardCharsets;'。) –

+0

@JohnSkeet凝胶我找到溶剂 – Selva

+0

@Selva:当我不能说错误是什么时,我该如何帮助您找到解决方案? –

3

您使用Java 7?

然后:

Files.newBufferedReader(Paths.get(System.getProperty("home.dir") 
    .resolve("java/in.txt")), StandardCharsets.UTF_8); 

您使用Java 7?完全丢掉File。见FilesPathsFileSystems,等等等等

(编辑:和使用try-与资源的语句,见@ JonSkeet的回答更多细节)

相关问题