Лучший отвечающий
Метод File.ReadAllLines нету в XNA на windows 8, каким методом его заменить?

Вопрос
-
Помогите пожалуйста молодому разработчику (студенту). Заранее Благодарю..
Метод File.ReadAllLines нету в XNA на windows 8..
Я пробывал заменить метод File.ReadAllLines, читав построчно в цикле while но выходит ошибка:
/* Необработанное исключение типа "System.MethodAccessException" в LevelGame.dll
Дополнительные сведения: Attempt to access the method failed: System.IO.File.OpenRead(System.String) */Исходник (замена метода File.ReadAllLines):
public void createlevel()
{
blocks = new List<block>();
string line = "";
int x = 0, y = 0;
List<string> strings = new List<string>();
using (var reader = new StreamReader(File.OpenRead("content/levels/level1.txt")))
{
while( ( line = reader.ReadLine()) != null )
{
string[] b = {line};
foreach (string str in b)
{
foreach (char c in str)
{
Rectangle rect = new Rectangle(x, y, 40, 40);
if (c == 'X')
{
block block = new block(rect, blockTexture1);
blocks.Add(block);
}
if (c == 'Y')
{
block block = new block(rect, blockTexture2);
blocks.Add(block);
}
x += 40;
}
x = 0;
y += 40;
}
}
}
}18 апреля 2013 г. 8:54
Ответы
-
Здравствуйте,
Попробуйте таким образом (источник):
List<string> lines = new List<string>(); using(StreamReader reader = File.OpenText(filename)) { while (!reader.EndOfStream) { lines.Add(reader.ReadLine()); } } // lines now contains all text in file
Если не получится, то пользуйтесь: IsolatedStorageFileStream Constructor (String, FileMode, IsolatedStorageFile)- Изменено Maksim MarinovMicrosoft contingent staff 23 апреля 2013 г. 6:50
- Предложено в качестве ответа Maksim MarinovMicrosoft contingent staff 24 апреля 2013 г. 7:50
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff 26 апреля 2013 г. 6:49
- Снята пометка об ответе Аблайхан 26 апреля 2013 г. 14:09
- Помечено в качестве ответа Аблайхан 26 апреля 2013 г. 14:18
23 апреля 2013 г. 6:15 -
Еще можно воспользоваться методом ReadToEnd Method и разбить результат по Environment.NewLine
Для связи [mail]
- Предложено в качестве ответа Maksim MarinovMicrosoft contingent staff 25 апреля 2013 г. 7:16
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff 26 апреля 2013 г. 6:49
- Снята пометка об ответе Аблайхан 26 апреля 2013 г. 14:10
- Помечено в качестве ответа Аблайхан 26 апреля 2013 г. 14:18
24 апреля 2013 г. 21:35 -
Речь идет о разработке под Windows Phone на XNA.
Там такой метод отсутсвует, через IsolatedStorage тоже не получится.
Решение такое (пишу прямо тут, в студии не проверял, так что могут быть ошибки)
Создать в Content файл level.xml.
Туда написать что-то примерно такое:
<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:ContentExtensions="НАЗВАНИЕ ПРОСТРАНСТВА ИМЕН ГДЕ БУДЕТ ЛЕЖАТЬ LevelContent">
<Asset Type="ContentExtensions:LevelContent">
<Rows><Item>00000000000000</Item>
<Item>00000000000000</Item>
<Item>00000000000000</Item>
<Item>00000000000000</Item>
</Rows>
</Asset>
</XnaContent>Дальше делается класс LevelContent. В нем свойство List<string> Rows.
В LoadContent загружается этот xml файл.
var level = Content.Load<LevelContent>("level.xml");
Все, теперь в level.Rows хранятся ряды из файла. Дальше их можно разобрать как обычно.
- Предложено в качестве ответа iandreev 25 апреля 2013 г. 19:14
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff 26 апреля 2013 г. 7:47
25 апреля 2013 г. 19:14 -
Спасибо всем!!! Но я нашел другое решение моей задачи: Я не стал читать с текста не каким-либо методом а также использовать XML так как я ими вообще не пользовался... Я решил просто в массив записать нужную информацию и работать с массивом...
Исходник текстового файла выглядит:
000000000
000000000
000000000
0XXX000XX
000000000
0000XXXX0
000000000
00XXX0000
000000000
YYYYYYYYYYрешение:
string [,] mas = {{"0000000000"}, {"0000000000"}, {"0000000000"}, {"0XXX000XXX"}, {"0000000000"}, {"0000XXXX00"}, {"0000000000"}, {"00XXX00000"}, {"0000000000"}, {"YYYYYYYYYY"}};
- Помечено в качестве ответа Аблайхан 26 апреля 2013 г. 14:17
26 апреля 2013 г. 14:17
Все ответы
-
Здравствуйте,
Попробуйте таким образом (источник):
List<string> lines = new List<string>(); using(StreamReader reader = File.OpenText(filename)) { while (!reader.EndOfStream) { lines.Add(reader.ReadLine()); } } // lines now contains all text in file
Если не получится, то пользуйтесь: IsolatedStorageFileStream Constructor (String, FileMode, IsolatedStorageFile)- Изменено Maksim MarinovMicrosoft contingent staff 23 апреля 2013 г. 6:50
- Предложено в качестве ответа Maksim MarinovMicrosoft contingent staff 24 апреля 2013 г. 7:50
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff 26 апреля 2013 г. 6:49
- Снята пометка об ответе Аблайхан 26 апреля 2013 г. 14:09
- Помечено в качестве ответа Аблайхан 26 апреля 2013 г. 14:18
23 апреля 2013 г. 6:15 -
Еще можно воспользоваться методом ReadToEnd Method и разбить результат по Environment.NewLine
Для связи [mail]
- Предложено в качестве ответа Maksim MarinovMicrosoft contingent staff 25 апреля 2013 г. 7:16
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff 26 апреля 2013 г. 6:49
- Снята пометка об ответе Аблайхан 26 апреля 2013 г. 14:10
- Помечено в качестве ответа Аблайхан 26 апреля 2013 г. 14:18
24 апреля 2013 г. 21:35 -
Здравствуйте,
Такой практики на форумах у нас нет. Пожалуйста, задавайте Ваши вопросы здесь, создавайте новые темы и пожалуйста, не забывайте отмечать сообщения, которые помогли Вам, как ответы.
Спасибо)
25 апреля 2013 г. 7:15 -
Речь идет о разработке под Windows Phone на XNA.
Там такой метод отсутсвует, через IsolatedStorage тоже не получится.
Решение такое (пишу прямо тут, в студии не проверял, так что могут быть ошибки)
Создать в Content файл level.xml.
Туда написать что-то примерно такое:
<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:ContentExtensions="НАЗВАНИЕ ПРОСТРАНСТВА ИМЕН ГДЕ БУДЕТ ЛЕЖАТЬ LevelContent">
<Asset Type="ContentExtensions:LevelContent">
<Rows><Item>00000000000000</Item>
<Item>00000000000000</Item>
<Item>00000000000000</Item>
<Item>00000000000000</Item>
</Rows>
</Asset>
</XnaContent>Дальше делается класс LevelContent. В нем свойство List<string> Rows.
В LoadContent загружается этот xml файл.
var level = Content.Load<LevelContent>("level.xml");
Все, теперь в level.Rows хранятся ряды из файла. Дальше их можно разобрать как обычно.
- Предложено в качестве ответа iandreev 25 апреля 2013 г. 19:14
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff 26 апреля 2013 г. 7:47
25 апреля 2013 г. 19:14 -
Речь идет о разработке под Windows Phone на XNA.
Там такой метод отсутсвует, через IsolatedStorage тоже не получится.
Какой метод отсутствует не могли бы уточнить? Если Вы про ReadToEnd то он есть в XNA и поддерживается в Windows Phone 8. И почему считаете, что через IsolatedStorage не получится?
26 апреля 2013 г. 6:49 -
Спасибо всем!!! Но я нашел другое решение моей задачи: Я не стал читать с текста не каким-либо методом а также использовать XML так как я ими вообще не пользовался... Я решил просто в массив записать нужную информацию и работать с массивом...
Исходник текстового файла выглядит:
000000000
000000000
000000000
0XXX000XX
000000000
0000XXXX0
000000000
00XXX0000
000000000
YYYYYYYYYYрешение:
string [,] mas = {{"0000000000"}, {"0000000000"}, {"0000000000"}, {"0XXX000XXX"}, {"0000000000"}, {"0000XXXX00"}, {"0000000000"}, {"00XXX00000"}, {"0000000000"}, {"YYYYYYYYYY"}};
- Помечено в качестве ответа Аблайхан 26 апреля 2013 г. 14:17
26 апреля 2013 г. 14:17