Добавить к комментарию @ Stu. Стоит отметить, что сокет-соединения не имеют всех своих данных одновременно, но вместо этого может потребоваться поддержка многих медленных соединений (esp-соединения, которые открыты, но данные еще не отправляются)
Однако для файлов все данные доступны сразу, и вам обычно нужно открыть только несколько файлов за раз, чтобы получить максимальную производительность (часто по одному за раз). Если вы загружаете данные с нескольких дисков (редко ) или с нескольких серверов (очень редко) или с нескольких сетевых интерфейсов (даже реже), вы можете получить доступ к нескольким файлам за один раз, что повышает производительность. Даже тогда сложность невелика, и вы можете просто создать поток для каждого загружаемого файла.
Единственный случай, когда файлы являются сложными, это чтение файлов журнала. Это сложно, так как файл может увеличиваться в размере, когда вы его читаете. Вы можете дойти до конца файлов и позже найти больше данных. Кроме того, файлы журнала можно вращать, что означает, что файл, который вы открыли, больше не тот файл, который вам нужен. Несмотря на это, это не очень сложно для решения и довольно редкое требование.