2012-11-13 1 views
1

Так что мой вопрос только в том, как заголовок заголовок. Ниже приведен фрагмент моего кода. Я понимаю, что я должен использовать try/catch, но в моем уловке я не уверен, что с ним делать. Я получаю сообщение об ошибке/ЗДЕСЬ/заявив, что BufferedReader не может принимать InputStream. Я хочу продолжить использование BufferedReader, так есть ли какой-либо другой класс, который я мог бы создать в моем новом BufferedReader, чтобы мой компилятор был счастлив? Любая помощь будет очень признательна, спасибо!Файл ввода/вывода Java: если файл с жесткой кодировкой не найден, как я могу запросить пользователя для файла?

//reads in 'dictionary' file 
    BufferedReader bReader; 
    try 
    { 
     bReader = new BufferedReader 
       (new FileReader("unsortedWords.txt")); 
    } 
    catch (FileNotFoundException e) 
    { 
     System.out.print("Enter name of dictionary file: "); 
     bReader = new BufferedReader 
       (new FileReader(System.in)); /*HERE*/ 
    } 

ответ

3

Может быть, это:

File file = new File("unsortedWords.txt"); 
if(file.exists()) 
{ 
// do something 
} 
else 
{ 
// prompt for file 
// if command line you can use Scanner or an InputStreamReader 
// if GUI you can use a File Chooser. 
} 

Если вы не знаете, как это сделать в командной строке или GUI вещь, то просто спросите меня, и я отправлю остальную часть кода.

[EDIT]: Я вижу, что вы делаете в командной строке, так что вы можете попробовать это:

InputStreamReader isr = new InputStreamReader(System.in); 
BufferedReader br = new BufferedReader(isr); 
String line = br.readLine(); 

[EDIT]: Пример класса (да это имеет плохой дизайн, но я написал его быстро) :

import java.io.*; 

public class Temp 
{ 

    public static void main(String[] args) throws IOException 
    { 
     InputStreamReader isr = new InputStreamReader(System.in); 
     BufferedReader br = new BufferedReader(isr); 
     System.out.println("Hello World!"); 
     String temp = br.readLine(); 
     System.out.println("Your line : \"" + temp + "\""); 
    } 
} 

[EDIT]: Вот это класс, который я сделал, который должен работать для вас.

import java.io.*; 

public class Temp 
{ 

    public static void main(String[] args) throws IOException 
    { 
     String fileName = "RandomFileThatDoesntExist"; 
     File file = new File(fileName); 

     if(file.exists()) 
     { 
      FileReader fr = new FileReader(fileName); 
      BufferedReader br = new BufferedReader(fr); 
      String line; 
      while((line = br.readLine()) != null) 
      { 
       System.out.println(line); 
      } 
     } 
     else 
     { 
      InputStreamReader isr = new InputStreamReader(System.in); 
      BufferedReader br = new BufferedReader(isr); 
      System.out.println("Enter file Name:"); 
      String line; 
      while(true) 
      { 
       line = br.readLine(); 
       File myFile = new File(line); 
       if(myFile.exists()) 
        break; 
       else 
        System.out.println("Error, file doesn't exist!"); 
      } 
      FileReader fr = new FileReader(line); 
      BufferedReader br2 = new BufferedReader(fr); 
      System.out.println("File contents:"); 
      while((line = br2.readLine()) != null) 
      { 
       System.out.println(line); 
      } 
     } 
    } 
} 

Скриншот:


Screenshot of Command Line

+0

Для еще, если я хочу продолжать использовать BufferedReader, что мне передать в него? Есть ли способ конвертировать InputStream в FileReader? – Mike

+0

Я не уверен в этом, может быть, попрошу других. Однако я не вижу цели этого. Я думаю, что Java автоматически будет мусор собирать его после использования, если это вас беспокоит. –

+0

О, прости! Я отправил этот комментарий, прежде чем увидел, что вы пишете свое редактирование. Пожалуйста, не обращайте внимания на мой предыдущий комментарий! Спасибо за помощь! – Mike

1

Я не думаю, что вы разместили код в использовании, ваша ошибка должна быть связана с созданием FileReader из ImputStream.

Использование InputStreamReader:

BufferedReader in 
    = new BufferedReader(new InputStreamReader(System.in)); 

точно, как указано в документации :)

+0

О, вау ... Я чувствую себя глупо за то, что не хватает в документах Java .. Я продолжал пролистывать их и видел только конструктор BufferedReader, который берет Reader. Я чувствую себя немым .. -_- – Mike

+0

Я обычно просто ищу «как создать X из Y» –