Запишите много файлов в один файл и прочитайте его - PullRequest
0 голосов
/ 12 марта 2019

У меня сервис работал с большим количеством файлов

1) читать из какого-то места

2) записать его на диск

3) хранить файлы без удаления

4) получить веб-запрос для файла

5) чтение с диска

6) запись содержимого в веб-ответ

В первый раз все работало нормально, но теперь существует 4 000 файлов (27 ГБ), и существует проблема с файловой системой, вызывающей это количество файлов.

Я хочу записать все файлы в один файл, а затем прочитать их из этого файла. Есть ли лучшие практики для этого или библиотеки?

Любые советы приветствуются!

p.s.

1) сервис теперь работает на asp.core 2.0 + linux

2) главная проблема сейчас - утечка памяти (много дескрипторов файлов?) И максимальное количество дескрипторов файловой системы

3) сервис создает длинную иерархию иерархий (7 уровней), поэтому существует 6 000 000 папок

1 Ответ

0 голосов
/ 12 марта 2019

Вы не сможете использовать один файл, у вас возникнут проблемы с потоками / производительностью.

Когда я делаю это, я создаю временный файл, записываю в него .. затем читаю содержимое, подобное вам. Затем удалите его.

  try
  {
    string filename = System.IO.Path.GetTempFileName() + "_" + bidScenarioId.ToString();
    System.IO.File.WriteAllBytes(filename, bytes);

    …

  }
  finally
  {
     System.IO.File.Delete(filename);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...