2015-11-18 2 views
0

Я хотел бы, чтобы прочитать текстовый файл в следующем формате:Загрузка отформатированных данных из текстового файла в объекте

title1, 2010, isbn, 121212 
author1, firstname, lastname 
author2, firstname, lastname 

title2, 1999, isbn, 565656 
author1, firstname, lastname 

title3, 2001, isbn, 898989 
author1, firstname, lastname 
author2, firstname, lastname 
author3, firstname, lastname 

Каков наилучший способ загрузки данных в каждом объекте (ы) с помощью объектно- ориентированный язык программирования, такой как Java?

Должен ли я создать один класс которым эти атрибуты название, год, ISBN и авторов, как это:

public class Book { 

    private String title; 
    private String year; 
    private String isbn; 
    private List<String> author; // A list because I don't know how many authors wrote the book 
} 

или кратные классы, по одному для каждого объекта:

public class Book { 

    private String title; 
    private String year; 
    private String isbn; 
} 

public class Author { 

    private String firstname; 
    private String lastname; 
} 

Спасибо.

+0

Это будет downvoted. Что вы пробовали до сих пор? –

+0

Что делать, если имя или фамилия имеют запятую? –

+0

напишите код Java, чтобы открыть файл, прочитать строку за строкой, разделить строку и сохранить соответствующие данные в Object. –

ответ

0

Ваш «отформатирован» файл действительно отформатирован? У вас возникнут проблемы, потому что в вашем файле есть два типа объектов. И они не распознаются с точки зрения парсера. Это означает, что вам понадобится настраиваемая логика, в которой вы анализируете, что вы анализируете, а затем нужно решить, какой именно объект и как его хранить.

Один подход для этого может быть http://opencsv.sourceforge.net/ Ваш файл выглядит как файл csv для меня и может быть проанализирован как таковой.

Если у вас есть контроль над вашими форматированными данными, вы должны изменить его, чтобы уточнить, какова цель. Вы должны были бы несколько вариантов, например:

  1. Раздельной в 2 CSV файлов Вы можете иметь 1 файл для книг, другие для авторов. Затем opencsv lib автоматически анализирует ваши файлы на объекты Java, которые вы можете использовать.

  2. Создать формат JSON для файла

, например, вместо форматирования, как и выше, вы можете использовать:

{ 
"title" : "mytitle", 
"year": 2001, 
"isbn" : 1231312, 
"authors" : [ "author1", "author2" ] 
} ... 

Этот формат позволяет использовать GSON или Джексон объекты для анализа этих файлов, и в этот момент это становится очень легко. В Google будет много примеров того, как это использовать.

Надежда, что помогает,

артур

+0

Спасибо, pandaadb, но, к сожалению, я не контролирую этот файл. Поэтому я не могу переформатировать его. – Hisab

+0

В этом случае ответ Хроноса будет в порядке. С точки зрения ваших объектов, я считаю, что хорошей практикой является разделение книги и автора. Затем книга может содержать список авторов для вас. Или автор может содержать список книг или обоих (это зависит от того, что ваше приложение хочет сделать). – pandaadb

0

Вот все, что вам нужно, чтобы собрать решение.

Чтобы прочитать файл построчно использовать BufferedReader:

BufferedReader reader = new BufferedReader(new FileReader(filename)); 

Теперь вы можете прочитать строку, вызвав, например

String line = reader.readLine(); 

Чтобы разбить строку в ее разделенной запятой элементов, может использовать String.split. например.

String[] token = line.split(","); 

Вы должны быть в состоянии собрать решение, используя эти инструменты и некоторые творчества :)

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