C# как читать файл из папки в каталоге проекта root - PullRequest
1 голос
/ 07 мая 2020

При загрузке формы мне нужно прочитать двоичный файл в папке /skubin и использовать его для заполнения List. Но я не могу открыть файл. Когда я это сделаю, я получаю сообщение об ошибке, указывающее, что файл не существует.

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

string startpath = Application.StartupPath;           
string BinDir = Path.Combine(startpath, "skubin");
binNanme = Path.Combine(BinDir, "skuen.bin");
if (!File.Exists(binNanme))
{
    MessageBox.Show("Load bin fail");
    return;
}

При проверке значения BinDir вместо того, чтобы указывать на <project_root>/skubin, оно указывает на <project_root>/bin/Debug/skubin.

Я не понимаю, почему он указывает на папку /bin/Debug.

Ответы [ 3 ]

1 голос
/ 07 мая 2020

Щелкните правой кнопкой мыши файлы .bin в папке skubin в обозревателе решений и выберите свойства. Установите «Копировать в выходной каталог» на «Всегда копировать». Это должно решить вашу проблему без каких-либо изменений кода. Я предполагаю, что вам понадобятся эти двоичные файлы во время выполнения.

0 голосов
/ 07 мая 2020
string filepath = Server.MapPath("~/skubin")
filepath= Path.Combine(filepath, "skuen.bin")
// open the file 

//if not in a controller,  you may use this

HttpContext.Current.Server.MapPath("~/skubin")

Для Windows приложения вы можете попробовать Лучший способ получить путь к папке приложения

0 голосов
/ 07 мая 2020

Когда вы компилируете свой проект, результаты помещаются в папку {projectFolder} \ bin \ Debug, а при отладке приложение запускается оттуда.

У вас есть 2 варианта:

Сохраните код как есть и в окне свойств отметьте свои файлы bin как «Копировать, если новее» или «Копировать всегда». Это скопирует файлы в \ bin \ Debug \ skubin при компиляции и получит доступ к ним оттуда. Это имитирует развертывание этих файлов с вашим приложением.

- Или -

Измените свой код, чтобы переместить 2 каталога вверх из Application.StartupPath:

string BinDir = Path.Combine(startpath, "..\\..\\skubin");

Это было бы вариантом, если вы не думаете о развертывании своего приложения, а просто запускаете его из папки своего проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...