Ошибка при чтении txt-файла с использованием dart.io - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь прочитать файл из нескольких строк с двумя числами di git в каждой строке, представляющими структуру двоичного дерева. Я использую дротик и стандартную библиотеку IO. Это код, который я использую:

String contents = new File('./assets/triangle.txt').readAsStringSync();

Проблема в том, что я получаю следующую ошибку:

max_path_sum/assets/triangle.txt:1:1: Error: Expected a declaration, but got '75'.
75
^^
max_path_sum/assets/triangle.txt:2:1: Error: Expected a declaration, but got '95'.
95 64
^^
max_path_sum/assets/triangle.txt:2:4: Error: Expected a declaration, but got '64'.
95 64
   ^^
max_path_sum/assets/triangle.txt:3:1: Error: Expected a declaration, but got '17'.
17 47 82
^^
max_path_sum/assets/triangle.txt:3:4: Error: Expected a declaration, but got '47'.
17 47 82
   ^^
max_path_sum/assets/triangle.txt:3:7: Error: Expected a declaration, but got '82'.
17 47 82
      ^^
max_path_sum/assets/triangle.txt:4:1: Error: Expected a declaration, but got '18'.
18 35 87 10
^^
max_path_sum/assets/triangle.txt:4:4: Error: Expected a declaration, but got '35'.
18 35 87 10
   ^^
max_path_sum/assets/triangle.txt:4:7: Error: Expected a declaration, but got '87'.
18 35 87 10
      ^^
max_path_sum/assets/triangle.txt:4:10: Error: Expected a declaration, but got '10'.
18 35 87 10
         ^^

Это файл, который я пытаюсь прочитать:

75
95 64
17 47 82
18 35 87 10
20 04 82 47 65
19 01 23 75 03 34
88 02 77 73 07 63 67
99 65 04 28 06 16 70 92
41 41 26 56 83 40 80 70 33
41 48 72 33 47 32 37 16 94 29
53 71 44 65 25 43 91 52 97 51 14
70 11 33 28 77 73 17 78 39 68 17 57
91 71 52 38 17 14 91 43 58 50 27 29 48
63 66 04 68 89 53 67 30 73 16 69 87 40 31
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23

Я пробовал разные варианты чтения файла. Асинхронно, синхронно, строка за строкой, весь файл в одной строке, но постоянно появляется одна и та же ошибка. Он, очевидно, читает строки, но, похоже, ожидает какой-то другой формы ввода и не доволен просто предоставлением мне данных, которые он читает ... Все примеры, которые я нахожу в Интернете, указывают на то, что код правильный и он должен работать. Таким образом, я предполагаю, что мне, возможно, придется что-то сделать с входным файлом, чтобы он был принят в качестве допустимого ввода, но это может показаться непрактичным, поскольку он способен читать данные очень хорошо, как есть.

Я нашел проблему. Следующее форматирование файла работает для первой строки:

var a = "75";
95 64
17 47 82
18 35 87 10
20 04 82 47 65
19 01 23 75 03 34
88 02 77 73 07 63 67
99 65 04 28 06 16 70 92
41 41 26 56 83 40 80 70 33
41 48 72 33 47 32 37 16 94 29
53 71 44 65 25 43 91 52 97 51 14
70 11 33 28 77 73 17 78 39 68 17 57
91 71 52 38 17 14 91 43 58 50 27 29 48
63 66 04 68 89 53 67 30 73 16 69 87 40 31
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23

Так что я предполагаю, что если я сделаю содержимое файла в строковую переменную, все будет хорошо. Но почему это? Разве невозможно прочитать обычный текстовый файл в дротике, не изменив его содержимое в первую очередь?

1 Ответ

0 голосов
/ 12 января 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...