Допустим, есть скрипт который создаёт файл. string fileName = @"D:\\output.txt";
Какую библиотеку или что использовать, чтобы вместо D:\\ он использовал текущую папку, где находится сам скрипт или .exe файл ?
А если допустим, я хочу использовать .txt файл который находиться в той же директорий, просто файл с расширение .txt без имени. Могу ли я написать просто " *.txt " что бы программа сама нашла этот txt файл ?
Запись и чтение всегда автоматически использует базовую директорию с исполняемым файлом.
Исключения бывают, к примеру Web приложение с использованием IIS использует root директорию сайта как основную. (Не везде)
Если не указывать полный путь, то файл создастся в активной (сейчас точно не помню как это Майкрософт правильно называет) директории. Активная директория не обязательно директория из которой был запущен исполняемый файл. И в процессе работы она может меняться. Ваш ответ не правильный и вредный.
Johnny Gat, просто так "активная директория" не изменится. Базовая директория устанавливается либо через биндинг в App.config. Либо при создании домена.
Так что нет, для простых приложений это обязательно та директория, откуда был запущен файл.
Johnny Gat, Если программа сама меняет активную директорию.
То это уже не правильно. Точнее, даже не особо представляю как это сделать.
В уже созданном домене BaseDirectory является readonly. Ну как readonly, setter является приватным.
Чисто теоретически можно через рефлексию поменять директорию.
Хотя нет, такое возможно в игровых движках по типу Unity или Xenko.
Ну или в кастомных системах.
В любом случае. всюду указывать AppDomain.CurrentDomain.BaseDirectory , Directory.GetCurrentDirectory() или Assembly.GetEntryAssembly().Location не особо верно.
Я не отрицаю что это "наверное?" правильно, когда пишешь код для игровых движков, какие нибудь расширения\плагины для программ.
Но в этом случае лучше изучить, есть ли там кастомный домен, или нет.