2015-05-02 2 views
2

Я использую внешние текстовые файлы, чтобы сохранить счет и имя игрока (я только сохранить один балл и одно имя в двух разных файлах)чтения и текстовый файл письменности публиковать проблемы с #

Когда есть новый рекорд он сохраняет старый. У меня все было отлично, пока я не опубликовал проект, теперь он не может найти файл.

Я вложил txt-файл, но я не могу написать ему.

Я использую следующий код.

using (StreamWriter write = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "highscore.txt")) // read the high score text file 
{ 
    write.WriteLine(player.score); // saves the new high score 
    write.Close(); // closes the file 
} 
using (StreamWriter write = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "nickname.txt")) // reads the high score text file 
{ 
    write.WriteLine(player.nickname); // save new highscore name 
    write.Close(); // close file 
} 

При запуске игры с USB- или компакт-диска они не будут прочитать -

Так что мой вопрос - как я поместить файлы .txt в каталог в свою игру можно увидеть/найти?

+0

Вам необходимо сохранить папку/файл в SpecialFolder. PLS см. Этот ответ http://stackoverflow.com/questions/16500080/how-to-create-appdata-folder-with-c-sharp – Amitd

ответ

4

Когда вы запускаете вашу программу с компакт-диска, путь вашего приложения на этом компакт-диске, так что код:

AppDomain.CurrentDomain.BaseDirectory + "highscore.txt" 

указывает на путь только для чтения компакт-дисков.

для того, чтобы иметь возможность сохранить файл должным образом, вы можете:

  • попросить пользователя ввести путь к которому он/она хочет, чтобы данные были сохранены
  • использовать один из доступных каталоги (смотрите в классе окружающей среды), например с помощью:

    Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)

Также обратите внимание, что лучше использовать Path.Combine(), чтобы конкатенировать дорожки, а не знак «+».

+0

Спасибо, я даст это баш. –