Токенизатор строк и разбор простого текста JAVA

Я делаю простую текстовую карточную игру для развлечения/практики с разбором файлов. У меня есть обычный текстовый файл со всеми характеристиками карты. Мои карты разделены на "##########". Они многострочные. А пока я просто хочу иметь возможность открыть всю ОДНУ карту, когда захочу. Например, Игрок выбирает персонажа 1, поэтому я открываю только Карту 1? Как ?

EXAMPLE: 
##########
CARD 1
Character Name: 
Something Else:
##########
CARD 2
Character Name: 
Something Else:
##########
Character Name: 
Something Else:
##########

КАК Я МОГУ НА САМОМ ДЕЛЕ РАЗДЕЛИТЬ КАРТЫ, ЧТОБЫ ПРОСТО СПРОСИТЬ ПОЛЬЗОВАТЕЛЯ, КАКАЯ КАРТА. Я не хочу читать строки и печатать так, как я это делал. Это довольно громоздко и запутанно. Моя НОВАЯ ПОПЫТКА: ArrayList listForCard1 = new ArrayList(); Целое число selected_card = 1;

        try {

            String line;
            FileReader fR = new FileReader("MyText.txt");
            BufferedReader br = new BufferedReader(fR);
            int x = 0;
            Integer card = 1;
            while ((line = br.readLine()) != null) {
                ALines[x] = line;
                x++;
                if (line.contains("##########")) {
                    if ( card == selected_card) {
                       listForCard1.add(br.readLine());
                      // System.out.println(br.readLine());
                       break;
                    } else {
                       card++;
                    }
                }

            }
            System.out.println("Done");


            System.out.println(ALines[0]);
            System.out.println(ALines[1]);
            System.out.println(ALines[2]);
            System.out.println(ALines[3]);
            System.out.println(ALines[4]);
            System.out.println(ALines[5]);
            System.out.println(ALines[6]);


        } catch (IOException e) {
            e.printStackTrace();
        } 
}

person StreamingBits    schedule 02.03.2014    source источник
comment
добро пожаловать, попробуйте объяснить свою попытку немного больше, а не сбрасывать код. хотя это было довольно просто - поэтому я все равно проголосовал   -  person clancer    schedule 03.03.2014
comment
@clancer достаточно честно. Я сделаю это больше сейчас. Спасибо!   -  person StreamingBits    schedule 03.03.2014


Ответы (1)


попробуй это

        ArrayList<String> listForCard1 = new ArrayList<String>();
    Integer selected_card = 1;

    BufferedReader br = null;   
    try {

        String line;

        br = new BufferedReader(new FileReader("MyText.txt"));
        Integer card = 1;
        while ((line = br.readLine()) != null) {
            if (line.contains("##########")) {
                if ( card == selected_card) {
                   listForCard1.add(br.readLine());
                   listForCard1.add(br.readLine());
                   listForCard1.add(br.readLine());
                   break;
                } else {
                   card++;
                }
            }

        }
        System.out.println("Done");
        for (String s : listForCard1) {
            System.out.println(s);
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null)
                br.close();

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

выберите карту, установив selected_card.. мы подсчитываем, сколько ##### мы видим, когда мы видели достаточно, мы считываем эту карту и прекращаем чтение файла.. затем распечатываем его из массива

person clancer    schedule 02.03.2014
comment
проблема. Не удается сохранить файл. Я хочу сохранить формат. Карточки не сохраняются построчно - person StreamingBits; 03.03.2014
comment
Этот конкретный код не изменяет файл, о чем вы говорите? нужно ли позже записывать информацию из listForCard1 обратно в файл MyText.txt? - person clancer; 03.03.2014
comment
Я понял. За исключением того, что это очень неэффективно. Прямо сейчас я сделал это - person StreamingBits; 03.03.2014
comment
если вы придерживаетесь фиксированного размера строки, вы можете перейти прямо к карточке, используя файл с произвольным доступом stackoverflow.com/questions/9769874/ - person clancer; 03.03.2014
comment
Мне нужно перейти к каждой карте и распечатать эту конкретную карту при появлении запроса. Я надеялся разделить файл на основе разделения на (##########). Я выложу свой новый код через секунду. - person StreamingBits; 03.03.2014