Чтение из текстового файла с помощью StringReader в Visual Studio - PullRequest
0 голосов
/ 27 июня 2018

Я делаю небольшую игру-головоломку и пытаюсь загрузить некоторую информацию в строку из текстового файла с помощью StringReader. Это загрузит в Представление Сетки данных. Текстовый файл называется TextFile1.txt и находится в папке Puzzles. Текстовый файл настроен на постоянное копирование в выходной каталог.

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

x|y|direction|number|word|clue
5|5|down|1|love|Let _____ Rule
4|5|across|2|closed|Not Open
5|8|across|3|eraser|At the other end of a pencil
10|8|down|2|red|Hunt for _____ October
10|10|across|4|dallas|Redskin rival's city
9|5|down|3|dare|Triple Dog
13|8|down|4|relapse|To succumb again
11|12|across|5|cap|A night ____

код

Clues clue_window = new Clues();
    List<id_cells> idc = new List<id_cells>();
    public String puzzle_file = Application.StartupPath + "\\Puzzles\\TextFile1.txt";


    public Form1()
    {
        buildWordList();
        InitializeComponent();
    }



    private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }

    private void buildWordList()
    {
        String line = "";
        using (StringReader s = new StringReader(puzzle_file))
        {
            s.ReadToEnd();
            line = s.ReadLine();//ignores the first line
            while((line = s.ReadLine()) != null)
            {
                String[] l = line.Split('|');
                idc.Add(new id_cells(Int32.Parse(l[0]), Int32.Parse(l[1]), l[2], l[3], l[4], l[5]));
                clue_window.clue_table.Rows.Add(new String[] { l[3], l[2], l[5] });
            }
        }
    }

1 Ответ

0 голосов
/ 28 июня 2018

Прежде всего, когда у вас возникла такая проблема, вы сначала проверяете путь Читателя ( Я предлагаю вам использовать StreamReader вместо StringReader).

С моей точки зрения, есть 2 проблемы, которые могут быть:

1. Чтение может не работать, потому что текстовый файл не найден. (Чтобы убедиться в этом, покажите поле MessageBox при входе в этот цикл)

или

2. То, что s.ReadToEnd читает все из потока.

Эта функция копирует все данные (от первого до последнего байта) из файла. поэтому в следующий раз, когда вы прочитаете строку, она вернет ноль.

...