2015-02-12 2 views
0

Я создал файл с высокой оценкой для своей игры, и у меня проблемы с его чтением.C# Проблема с файловым каталогом

Когда я меняю компьютеры мой USB привод изменяет письмо .eg с диска E водить G.

Это вызывает проблемы с чтением файла. (поскольку я использую строку path = @ "g: \ Scores.txt";)

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

Мой текущий код: -

string path = @"g:\Scores.txt"; 
      StringBuilder sb = new StringBuilder(); 
      using (StreamReader sr = new StreamReader(path)) 
      { 
       while (sr.Peek() >= 0) 
       { 
        sb.Append(sr.ReadLine()); 
       } 
      } 

любая помощь приветствуется.

+1

Почему вы хотите использовать абсолютный путь для своего файла? –

+0

Какое приложение это? Вы можете использовать файл настроек. –

+0

Большинство программ хранят файлы конфигурации в одном каталоге. Если вы используете 'Scores.txt', он помещается в активный каталог (по умолчанию такой же, как и сама программа). –

ответ

3

Является ли игра на вашем USB-накопителе? Вы хотите сохранить файл в том же каталоге, что и игра, или в каком-нибудь каталоге где-нибудь? Сделайте что-то вроде этого: (. Например, в G:\)

using System; 
using System.IO; 
using System.Reflection; 
... 
string thisAsmFile = Assembly.GetExecutingAssembly().Location; 
string thisAsmDir = Path.GetDirectoryName(thisAsmPath); 
string highScoreFile = Path.Combine(thisAsmDir, "scores.txt"); 
+0

Стоит отметить, что другие комментарии и ответы являются лишь частично правильными. Относительное имя пути будет разрешено из текущего рабочего каталога, а не каталога приложения. Если вы дважды щелкните файл .exe, текущий рабочий каталог будет * обычно * быть тем же самым каталогом, что и приложение. Однако есть много ситуаций, когда это не так (например, выполняется из каталога UNC). Метод, показанный выше, гарантированно предоставит вам место исполняемого исполняемого файла. –

0

Если ваша программа находится в той же папке, что и файл, то вы можете просто получить доступ к файлу с его именем: `путь =«Scores.txt». В этом случае нет необходимости знать, где находится файл

0

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

using System.IO; 
using System.Windows.Forms; 

string appPath = Path.GetDirectoryName(Application.ExecutablePath); 

 Смежные вопросы

  • Нет связанных вопросов^_^