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); 
     } 
    } 
} 

при составлении выше программы я получаю сообщение об ошибке, как этотКонструктор InputStreamReader (File) не определено

ERROR в Streams.java (в строке 7) BufferedReader ш = новый BufferedReader (новый InputStreamReader (является)); ^^^^^^^^^^^^^^^^^^^^^^^^^

Конструктор InputStreamReader (File) не определено


любезно помочь мне из этой проблемы я использую Java 1.7.0_51 версии, OS linux Deepin

заранее спасибо

ответ

1

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(is))); и он должен работать.

+0

ничего не происходит, сэр – Selva

+0

И вы все еще получили такое же исключение? – Antoniossss

+0

при компиляции вашего пути я получаю FileNotFound и IOexception sir – Selva

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); 
    } 
} 

(Или используйте Files API, как в ответ FGE в.)

+0

@Selva: «Я получаю ошибку» не говорит нам ничего о * какой * ошибке. Если это связано с тем, что компилятор не может найти «StandardCharsets», это потому, что вам нужен импорт для него (например,'import java.nio.charset.StandardCharsets;'.) –

+0

@JohnSkeet gelp me, чтобы найти разрешение – Selva

+0

@Selva: Как я могу помочь вам найти решение, когда вы не скажете, что такое ошибка? –

3

Вы используете Java 7?

Тогда:

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

Вы используете Java 7? Drop File целиком. См Files, Paths, FileSystems и т.д. и т.п.

(редактирование: и используйте оператор примерочных с-ресурсами, см @ ответ JonSkeet для более подробной информации)