2012-05-06 3 views
1

я не следующий код:Java FileReader FileNotFound проблема при чтении в строке

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

    System.out.print("Enter: "); 

    String m = inFromUser.readLine(); 

    BufferedReader br = new BufferedReader(new FileReader(m)); 

    String text; 

    while((text = br.readLine()) != null){ 
     System.out.println(text); 
    } 

    br.close(); 

И при чтении строки от пользователя файл может и не найти. Я не знаю, что происходит, когда строка передается, но она становится неоправданной. Хотя файл там очень много.

У меня есть тесты, и когда я заменяю newFileReader (m) на newFileReader («Lab3/test»), файл найден, но когда я вхожу в «Lab3/test» в систему (через строку m = inFromUser.readLine();), чтобы прочитать его, он считывается и печатается как «Lab3/test», но программа чтения файлов никогда не находит файл, когда строка передается в считыватель файлов (Via m), когда строка является точной одна и та же.

Я немного искал Google, но пытался объяснить, что это боль.

благодарственное заранее, Сэм

+0

Для целей отладки попробуйте эту строку 'String m = inFromUser.readLine(); Файл f = новый Файл (m); System.out.prinln (f.getAbsolutePath() + "exists:" + f.exists()); ..' –

+0

Я просто попытался добавить файл f = new File (m); OK При вводе строки новый файл (m) отлично работает. Он выбирает файл и я добавил, что вы предложили и получили: «Введите: "Lab3/тест" C: \ Users \ Смитерс \ Dropbox \ Software Engineering Code \ Затмение \ Сеть \ "Lab3 \ тест" существует : false " Но еще раз, если я передаю f в буферный читатель, он все еще говорит, что файл не найден, что, безусловно, противоречиво? –

+0

'new File (m)' всегда будет работать, независимо от того, существует файл или нет. Вопрос в том, что возвращает 'new File (m) .exists()' return. Если он 'exists()' возвращает 'false', как это было в вашем случае, тогда файл не существует. –

ответ

3

Вы должны ввести имя файла без кавычек. Если вы вводите его с кавычками, тогда имя файла также должно содержать кавычки.

Если вы используете имя файла, например Lab3/test, тогда Java будет искать файл в текущем рабочем каталоге. Текущий рабочий каталог обычно находится там, где было запущено приложение. Мне может быть проще, если вы введете полное, абсолютное имя файла, например C:\Users\Smithers\Dropbox\Software Engineering Code\Eclipse\Networking\Lab3\test.

Неважно, если вы используете обратную косую черту или косую черту.

+0

Я понял это так же, как вы разместили это, спасибо за чтение в подсказках и подсказках парням. –