В консольное приложение не вставляется длинная строка

Код:

            Console.Write("URL: ");
            string url = Console.ReadLine();

Хочу вставить такую строку:

https://video-weaver.fra06.hls.ttvnw.net/v1/playlist/CsUFXGiuPbEQ0xqlAlxK_Mu9dqE5A6CvS0IvHdil5dT4RMD6MlS8zq0ME-vPMeyRII9y0bYLOWj_GvdlgmrS09xIGh3dyQDeNNgexHEatyRkdwPeof-sn3SP7ZMRPk71q7yhmRuzot-cDuFl-GUdKvVJKt5POG_1wnD8k7uO2F9_qK4Ses803lpDUq5byfqdd89UFRGaDlIM1PYCYyNXvq1JUfTmDjuAWE4DwyITWJvWwHj_ZQneAu0N2QGcBd7KDTwc4tMs7EVjTWNudQ963dwZpZVT95lODHMyG57IKAbIm8pILCtZo5oR6ucslC75u_3ZgsQGbOcvOE8FVy8unNbYt8veV6_e2DR1kzoyz1Zu453VMsbn2Te6LlqoKminhm39lngmsAa-ZuxXNrhJknbsgDpUT1WNX_opcQWSyf9MCB1yLGAIjznLfIaab0vATV5DkBJGSxXXhecyID7ECsM3aZRuA1KQZHbRu8mgc7yFRmYUiLAH7zMkSrIORQXbLzxhmcvqNu4v0NUGnn0MiLo8EDYNDkuGMuAULYQUAuLpTUXxFYTXK_ipp72jvyos69fWnaZ_vsZa_5BhI_hw2QGzlBCnr-j9TM854WHzWDs0nqiR-gUMRFgItsyVRB5D-KwJMggcz6uilGA3_brbwaIr11H0ESS4sXMb7Y1Ry4XRw6uswFu3aRa5Tqjyhi3u_twfDpvriaTh25WnSoobYaqKPKrrXv0b7lYTcU_KSSTCVESQX4O5YKJAJMpY3oy4RKrENe9d62yUvODLZH2M8dufSY8RU5lA3aXUvpiSeaXfN1TRCzaxvaNlGmYEAFDvYCM_26icxEIOAotkeHQPbejAYX6WNGlXnlgs2BVZ1w6u9cLRpgS7DDK40BCCO_XcsBYm4NaB1pQtRWYYapq9cxuF1N9XvgNhosorNPHPbM3Pco4UUJ6mnBoM5VfYziXJqxtGuba5IAEqCWLXdlc3QtMTDuAg.m3u8

но при вставке она обрезается:

А просто в консоль винды - вставляется.

В старых версиях windows есть ограничение 1024 символа на длину переменной окружения. Как ты делаешь действие “хочу вставить” точно?

When an application calls the CreateEnvironmentBlock function to retrieve the environment variables on a Microsoft Windows Server 2003-based or Microsoft Windows XP-based computer, the returned path environment variable is truncated to 1,024 bytes. This behavior occurs even though the maximum size of an environment variable is 2,048 bytes. This problem prevents the application from obtaining the correct environment variable.

Ctrl+V

Похоже, что у метода Console.ReadLine тоже ограничение на 254 символа :thinking:
Нашел, что можно обойти вот так:


            byte[] inputBuffer = new byte[8192];
            Stream inputStream = Console.OpenStandardInput(inputBuffer.Length);
            Console.SetIn(new StreamReader(inputStream, Console.InputEncoding, false, inputBuffer.Length));

И правда - работает

1 лайк

да. я не знал о таком.

        const int bufferSize = 4096; // Set the buffer size to 4096 characters
        var inputStream = new StreamReader(Console.OpenStandardInput(bufferSize));
        Console.SetIn(inputStream);

        string input = Console.ReadLine();

Точнее, не у метода, а просто нельзя даже напечатать больше 254-х символов.

А у буфера потока в реализации рантайма языка