2014-11-10 4 views
-3

Чтение файла на Java. Я получаю исключение «FileNotFound». Исключения:Чтение .txt-файлов в java

java.io.FileNotFoundException: something.txt (The file was not found) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileReader.<init>(Unknown Source) 
    at rmihello.ReadStringFromFileLineByLine.main(ReadStringFromFileLineByLine.java:13) 

Даже если мой файл находится в моем бункере рядом с моим исходным кодом: Я также попытался дать ему весь путь к моему файлу, например

path = "C:/Users/Alexander/Desktop/java/something.txt" 

или

path = "cd 'C:/Users/Alexander/Desktop/java/something.txt'" 

Все это не может Вот мой код

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 

public class ReadStringFromFileLineByLine { 

    public static void main(String[] args) { 
     try { 
      String path = "something.txt"; 
      File file = new File(path); 
      FileReader fileReader = new FileReader(file); 
      BufferedReader bufferedReader = new BufferedReader(fileReader); 
      StringBuffer stringBuffer = new StringBuffer(); 
      String line; 
      while ((line = bufferedReader.readLine()) != null) { 
       stringBuffer.append(line); 
       stringBuffer.append("\n"); 
      } 
      fileReader.close(); 
      System.out.println("Contents of file:"); 
      System.out.println(stringBuffer.toString()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Вашего вторым фрагментом является линией Баша ... это не имеет ничего общего с Java. Какая у вас ошибка ? Никогда не запрашивайте исправление без сообщения об ошибке – Dici

+0

** Где ** вы указываете инструкции 'path = ...'? Я не вижу нигде в вашем коде, который выглядит похожим. –

+0

Итак, где вы используете «путь» в коде? –

ответ

0

Как уже упоминалось в комментариях, ваш код должен начинаться так:

Path file = ; //Specify the path to your file 

Take посмотрите на Reading, Writing, and Creating Files in Java для получения дополнительной информации

Edit:

Просто измените свой код, как это работает хорошо для меня:

public static void main(String[] args){ 
String path = "C://Something.txt"; // I put the file under the C: path in my example 
try { 
     File file = new File(path); 
     FileReader fileReader = new FileReader(file); 
     BufferedReader bufferedReader = new BufferedReader(fileReader); 
     StringBuffer stringBuffer = new StringBuffer(); 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
      stringBuffer.append(line); 
      stringBuffer.append("\n"); 
     } 
     fileReader.close(); 
     System.out.println("Contents of file:"); 
     System.out.println(stringBuffer.toString()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Тогда просто изменить путь, чтобы соответствовать вашим.

+0

Извините, это добавлено сейчас! – user3711518

+0

ОК, тогда взгляните на мое Редактирование, которое должно сделать трюк. –

+0

Это тот же самый код, что и у OP – Dici

-1

если вставить текстовые файлы в папку с именем text_files, например, вы можете получить доступ к нему с помощью

File f = new File("text_files/something.txt");

+0

-1: Если текущий код не работает, перемещение файлов в подкаталог и добавление этого в начало пути также не будет работать. –

+0

Почему текущий код не работает? проблема, на мой взгляд, находится в пути для текстового файла. и это не приводит к понижению голосов. Думаю –

+0

Ну, мы не совсем уверены (это не большой вопрос). Но - ваше решение будет работать * тогда и только тогда, когда * работает существующий код. Ошибка более вероятна из-за неправильного CWD или пользователя, не имеющего прав на чтение; ни одно из которых ваше предложение не решит. –

0

Относительный путь добавляет к неопределенности, когда файл-не-найден вытекает из. Как вы пробовали альтернативы, обработать ошибку:

File file = new File("C:/.../something.txt"); 
    try { 
     ... 
    } catch (FileNotFoundException e) { 
     File full = file.getAbsoluteFile(); 
     File dir = file.getParentFile(); 
     while (dir != null && !dir.exists()) { 
      dir = dir.getParentFile(); 
     } 
     System.out.printf("File %s does not exist under %s%n", 
       full.getPath(), 
       dir == null ? "/" : dir.getPath()); 
    } catch (IOException e2) { 
    } 

Советы:

StringBuilder быстрее, правопреемником StringBuffer.

Новый стиль (с Java 7):

Path path = Paths.get("C:/..."); 
byte[] content = Files.readAllBytes(path); 
String contentText = new String(content); // Default encoding 
+0

Я попробовал вашу фразу «Уловка», она получила меня: Файл C: \ Users \ Alexander \ Dropbox \ java \ workspace \ rmihello \ something.txt не существует под/ My something.txt находится в папке rmihello – user3711518

+0

Это (Нет прав на пользователя?), возможно, попробуйте разместить файл в другом месте. –