2016-10-19 10 views
-1

Я пытаюсь использовать текстовый файл, чтобы заполнить 2D-массив для игрового поля. Кажется, я не могу заставить читателя фактически прочитать файл. Я получаю следующее сообщение об ошибке:Ошибка пути к файлу путаницы Java BufferedReader

"Unable to open file 'C://git/cse116f16/src/boardpieces/board.txt'Exception in thread "main" java.lang.NullPointerException".

Я знаю это, потому что я не использую правильный синтаксис для FilePath, но я не могу за жизнь мне понять, что это должно быть. Я храню его в C:\Users\myname\git\cse116f16\src\boardpieces\board.txt.

Какая строка должна быть передана в FileReader для чтения этого файла?


EDIT: Вот метод, может быть, проблема не то, что я думаю, что это.

Также следует отметить, что это находится в хранилище git, поэтому я должен быть уверен, что он может быть прочитан всеми, кто его тянет.

public Character[][] populateArray(String fileName){ 
     String line = null; 
     Character[][] retVal = new Character[26][28]; 
     int lineNum = 0; 
     try { 
      FileReader fileReader = new FileReader(fileName); 
      BufferedReader bufferedReader = new BufferedReader(fileReader); 

      //Assigns each character to it's corresponding place in the array 
      while((line = bufferedReader.readLine()) != null) { 
       for (int i = 0; i < 26; i++){ 
        retVal[lineNum][i] = line.charAt(i); 
       }     
      } 
      bufferedReader.close();   
     } 
     catch(FileNotFoundException ex) { 
      System.out.println("Unable to open file '" + fileName + "'");     
     } 
     catch(IOException ex) { 
      System.out.println("Error reading file '" + fileName + "'");     
     } 
     return retVal; 
    } 

    public void populateBoard(){ 
     String path = "C:\\Users\\myname\\git\\cse116f16\\src\\boardpieces\\board.txt"; 

     Character[][] arr = populateArray(path); 

     //the rest of the method... 
+0

Я не понимаю здесь, зачем нужна \\ вместо \, я могу сделать это, используя только одну косую черту, а также вы можете поделиться содержимым своего файла, чтобы обеспечить лучший ответ –

ответ

0

Попробуйте это:

String fileName = "C:\\Users\\myname\\git\\cse116f16\\src\\boardpieces\\board.txt"; 
//or "C:/Users/myname/git/cse116f16/src/boardpieces/board.txt" 
File file = new File(fileName); 
FileReader fileReader = new FileReader(file); 

В slashs должны быть либо как \\ или как /.

(Оба \ и / работа, но так как \ является маскирующим Java читает \ это как экранирующий символ, так что, добавив еще один вы в основном только писать только слэш.)

Затем вы пытаетесь открыть File, а затем передать его в FileReader

+0

Я попробовал это, но это бросает ту же ошибку. – Bryan

+0

@Bryan Проблема в том, что вы делаете 'new FileReader (имя_файла)', вы должны делать 'новый FileReader (новый файл (имя_файла))' –

+0

изменил его, все еще не может прочитать файл. – Bryan

0

Пожалуйста, попробуйте

final File file = 
     new File("C:\\Users\\myname\\git\\cse116f16\\src\\boardpieces\\board.txt"); 
final FileReader fileReader = new FileReader(file); 
0
File myFile = new File("C:\\Users\\myname\\git\\cse116f16\\src\\boardpieces\\board.txt"); 
BufferedReader reader = new BufferedReader(new FileReader(myFile)); 
String text; 
while (reader.hasNextLine()){ 
    text += reader.nextLine(); 
} 
+0

Попробуйте отобразить его как код, добавив четыре пробела перед вашим кодом. – dudel

+0

Вы могли бы это записать \\\\ вместо \\ –

 Смежные вопросы

  • Нет связанных вопросов^_^