2016-12-09 8 views
0

Я хочу создать метод в Java, который считывает данные из txt-файла и возвращает массив. Я создал первую версию этого метода - могу сказать, что он работает, но я чувствую, что форма этого метода не эффективна, и есть способ сделать это намного быстрее и лучше ... Могу ли я спросить вы должны взглянуть и сообщить мне, что можно сделать лучше?Метод, который использует BufferedReader для чтения файла и возврата массива

Большое спасибо заранее за вашу ценную помощь

public static String[] reader(File file) throws IOException { 
    String array[] = null; 
    StringBuilder stringBuilder = new StringBuilder(); 
    String data; 

    try (BufferedReader reader = new BufferedReader(new FileReader(file))) { 

     int i = 0; 
     while ((data = reader.readLine()) != null) { 
      System.out.println("I've just read a line number" + (i + 1)); 
      i++; 

      stringBuilder.append(data + "/"); 
     } 

     if (stringBuilder != null) { 
      data = stringBuilder.toString(); 
      array = data.split("/"); 
     } 

     return array; 

    } 

} 
+0

Не используйте StringBuilder и затем разделяйте. Используйте ArrayList и добавьте прямые к нему. – Thilo

+0

Зачем вам нужна нулевая проверка на 'stringBuilder'? – Thilo

+1

Если вы действительно не хотите писать этот метод, вы также можете просто вызвать 'Files.readAllLines (filePath)' (стандартная библиотека библиотеки JDK 8). – Thilo

ответ

0

Гораздо более простой подход возможен, поскольку Java8:

public static String[] reader(File file) throws IOException{ 
    return (String[]) Files.lines(file.toPath()).toArray(); 
} 

Если вы соглашаетесь скорее вернуть List<String> код еще простой

public static List<String> reader(File file) throws IOException{ 
    return Files.readAllLines(file.toPath()); 
} 

Таким образом, ставя под сомнение необходимость соблюдения это просто инкапсулирует эту инструкцию. Возможно, вы могли бы просто удалить его и позвонить напрямую Files.readAllLines.

+0

Спасибо @Spotted! – kondzik

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

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