Проблема получения TXT-файла из папки, не находящейся в отладке - PullRequest
0 голосов
/ 22 марта 2019

Я работаю над игрой Monogame с группой одноклассников, и мы столкнулись с проблемой.Мы пытаемся загрузить файл .txt, который находится в папке под файлом нашего решения, который находится здесь в моногаме:

D: \ Profiles \ aa \ Source \ Repos \ s2t3 \ Game \ Game

Путь к файлу самой папки: D: \ Profiles \ aa \ Source \ Repos \ s2t3 \ Game \ Game \ AttackPattern \ ratAttackOne.txt

Но Monogame начинается с этой папки:

D: \ Profiles \ aa \ Source \ Repos \ s2t3 \ Game \ Game \ bin \ Windows \ x86 \ Debug \

Как мы сможем написать имя файла для чтения вTXT-файл, так что он идет в игру, а затем в шаблон атаки?

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Просто используйте StreamReader для чтения вашего txt-файла, затем вы можете использовать путь ... \ Game \ Game \ или любой другой файл в папке вашего проекта, а не в папке отладки.

            try
            {
                //Stream stream = TitleContainer.OpenStream("HighScore.txt");
                StreamReader streamReader = new StreamReader(
                    yourPathToTheTxtFileGoesHere));//for example, \AttackPattern\test.txt

                //do what you want to do with your txt file here

                streamReader.Close();

            }
            catch (FileNotFoundException)
            {

            }
0 голосов
/ 23 марта 2019

Вы можете использовать Assembly.GetExecutingAssembly, чтобы получить путь к отладочному EXE-файлу и переместить его обратно в корзину с помощью простого поиска по подстроке:

string debugPath = Assembly.GetExecutingAssembly().Location;
string basePath =
    debugPath.Substring(0,debugPath.IndexOf("\\bin\\", StringComparison.InvariantCultureIgnoreCase));
FileInfo fi = new FileInfo(Path.Combine(basePath, "AttackPattern", "ratAttack.txt"));

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

...