Как записать файл в папку проекта в. NET Core? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть проект веб-API, который получает данные от некоторых внешних вызовов API. Сейчас я хочу записать возвращенные данные как json в файл и поместить этот файл в папку в моем проекте, чтобы данные могли быть прочитаны для других вызовов. Я должен записать их в файл, а не хранить информацию в памяти.

Я видел несколько примеров использования System.IO для записи файлов, но все они ссылаются на запись файлов в локальную файловую систему за пределами проекта.

Как лучше всего это сделать?

Я использую. NET Core 3.1.

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Я действительно нашел решение без использования отражения. Вот мой код:

        private readonly IConfiguration _configuration;
        private readonly IWebHostEnvironment _env;

        const string FileLocation = @"\Files\json.txt";

        public GetTokenController(IConfiguration configuration, IWebHostEnvironment env)
        {
            _configuration = configuration;
            _env = env;
        }

        public async Task<string>WriteFile(string jsonString)
        {
            string contentRootPath = _env.ContentRootPath;
            var logPath = contentRootPath + FileLocation;

            using (StreamWriter streamwriter = System.IO.File.CreateText(logPath))
               {
                   await streamwriter.WriteLineAsync(jsonString);
               }

            return jsonString;
        }
0 голосов
/ 24 апреля 2020

Если я правильно понимаю, вам нужно получить путь к вашему проекту:

Как мне получить путь к сборке, в которой находится код?

System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location

Вместо DaoTests вставьте в ваш код любое имя класса, которое находится в вашей сборке.

Чем вы можете сохранить файл с помощью System.IO.File.WriteAllText

Я предлагаю вам создать в хотя бы подпапку в пути вашего проекта. Как правило, нет причин хранить данные в вашей «бинарной папке» вашего проекта. Сделайте где-нибудь свою «папку данных» и используйте этот путь.

...