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的回答更多細節)

相關問題