Читать из файла в Xamarin - PullRequest
       12

Читать из файла в Xamarin

0 голосов
/ 05 апреля 2020

У меня проблема с чтением моего .txt файла в Xamarin, и я не нашел ни одного решения, которое бы мне помогло, я также просмотрел рекомендации по переполнению стека, прежде чем опубликовать это.

Мое приложение только Android и я хочу рандомизировать строку из файла, я сначала сделал ее в c# с consol и выглядит так =>

String[] Card = System.IO.File.ReadAllLines(@"D:\Cards.txt");
//string[] Card = { "one", "two", "Three", "Four", "Five", "Six" }; this is what is in the file.

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

enter image description here

Я не уверен, что мой код неверен или его можно прочитать из файл. Ниже приведены 2 примера, которые я пробовал, но есть еще несколько, которые я пробовал, но этот код сейчас удален.

String[] text = File.ReadAllLines(Assets.Open("Cards.txt"));


    var currentPath = System.Environment.DataDirectory;
    var Filename = Path.Combine(currentPath, "Cards.txt");
    String[] text = File.ReadAllLines(Filename);

Я попробовал это сейчас, но он не будет работать как массив.

        string[] content;
        AssetManager assets = this.Assets;
        using (StreamReader sr = new StreamReader(assets.Open("Cards.txt")))
        {
            content[] = sr.ReadToEnd();
        }

        txtNumber.Text = content[3];

Я хочу, чтобы результатом была строка 3 в файле Cards.txt, которой будет три.

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Предполагая, что код находится внутри вашей папки Xamarin. Android, и его нет в библиотеке PCL, вы можете попробовать что-то вроде этого:

string content;
AssetManager assets = this.Assets;
using (StreamReader sr = new StreamReader (assets.Open ("read_asset.txt")))
{
    content = sr.ReadToEnd ();
}
0 голосов
/ 06 апреля 2020

Я успешно решил это так:

string content;
        string[] cards = new string[] { "" }; //created a empty string array
        AssetManager assets = this.Assets;
        using (StreamReader sr = new StreamReader(assets.Open("Cards.txt")))
        {  
            content = sr.ReadToEnd();

        }

        cards = content.Split('\n'); //Split the content after a new row.

        txtNumber.Text = cards[0]; //I changed the number inside cards[3] and it was showing correct value in the txt document.
...