Size: a a a

2021 March 17

VS

Vadim Shvanov in CODE BLOG / C#
в чем еще особенность
источник

VS

Vadim Shvanov in CODE BLOG / C#
если я делаю размер буфера достаточно большим, то оно еще более-менее работает
источник

S

SHKURMANDER in CODE BLOG / C#
Vadim Shvanov
Товарищи программисты, очень нужна ваша помощь. Мой мозг скоро взорвётся к хренам в этой дичью.
Есть достаточно стандартный код, который используется для блочного чтения файлов:

using (var fileReader = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
 using (var binaryReader = new BinaryReader(fileReader))
 {
   while (true)
   {
     var buffer = binaryReader.ReadBytes(_settings.BlockSize);
   }
 }
}

Казалось бы все хорошо, мы должны прочитать из потока fileReader заданное количество бит (blockSize) и сохранить это в массив buffer. На следующей итерации должно выполниться чтение следующего блока и т.д. до конца файла.

Однако, почему-то на второй и последующих итерациях буффер состоит из исключительно из 0. При этом перемещение по файлу идет, fileReader.Position меняется, но актуальные данные не сохраняются в буффер. При этом точно известно, что данные есть. Как такое вообще возможно? что за чертова магия?
а если binaryReader не заключать в using?
источник

VS

Vadim Shvanov in CODE BLOG / C#
однако, если поставить 32, то не читает
источник

AA

Azaray AOS in CODE BLOG / C#
А проблема только с конкретным файлом или с любым рандомным?
источник

VS

Vadim Shvanov in CODE BLOG / C#
с любым,
источник

SB

Sergey Benzenko in CODE BLOG / C#
Vadim Shvanov
с любым,
и локальными тоже? Может из какого-нибудь нагруженного места читаете, и он файл теряет перед тем, как успевает полностью прочитать?
источник

VS

Vadim Shvanov in CODE BLOG / C#
да с диска читаю, даже не из сети
источник

AA

Azaray AOS in CODE BLOG / C#
ещё вариант, что что-то какой то поток в это время с файлом работает.... (сложно рассуждать, когда не могу воспроизвести проблему(((
источник

S

SHKURMANDER in CODE BLOG / C#
@shwanoff  тож попробовал тестовый пример читает и на .net core и .net framework 4.7.2 без проблем
А на второй и последующих итерациях buffer прям заполнен нулями или просто в нем элементов нет?
источник

VS

Vadim Shvanov in CODE BLOG / C#
Заполнен нулями
источник

S

SHKURMANDER in CODE BLOG / C#
Vadim Shvanov
Заполнен нулями
а fileReader.CanSeek true после открытия файла?
источник

VS

Vadim Shvanov in CODE BLOG / C#
да, canSeek and canReat true, canWrite and canTimeout false
источник

S

SHKURMANDER in CODE BLOG / C#
мистика :)
источник

Э

Эдуард in CODE BLOG / C#
Vadim Shvanov
Товарищи программисты, очень нужна ваша помощь. Мой мозг скоро взорвётся к хренам в этой дичью.
Есть достаточно стандартный код, который используется для блочного чтения файлов:

using (var fileReader = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
 using (var binaryReader = new BinaryReader(fileReader))
 {
   while (true)
   {
     var buffer = binaryReader.ReadBytes(_settings.BlockSize);
   }
 }
}

Казалось бы все хорошо, мы должны прочитать из потока fileReader заданное количество бит (blockSize) и сохранить это в массив buffer. На следующей итерации должно выполниться чтение следующего блока и т.д. до конца файла.

Однако, почему-то на второй и последующих итерациях буффер состоит из исключительно из 0. При этом перемещение по файлу идет, fileReader.Position меняется, но актуальные данные не сохраняются в буффер. При этом точно известно, что данные есть. Как такое вообще возможно? что за чертова магия?
Пробовал Async/Await?
источник

Э

Эдуард in CODE BLOG / C#
Meiirzhan
Переслано от Meiirzhan
помогите плиз)) Как можно написать значение 3,14 рядом с p =
Console.Write();
источник

DE

Denis Evseev in CODE BLOG / C#
Всем привет, ищу Senior программиста, который за оплату может проверить мое тестовое решение? Делаю задание для одной топовой компании и нужен High Quality решение
источник

Ф

Фар in CODE BLOG / C#
Denis Evseev
Всем привет, ищу Senior программиста, который за оплату может проверить мое тестовое решение? Делаю задание для одной топовой компании и нужен High Quality решение
Владельцу канала напиши, он шарит.
источник

eo

evgeny otrokov in CODE BLOG / C#
Фар
Владельцу канала напиши, он шарит.
ему это не интересно
источник

S

Sn0w in CODE BLOG / C#
Vadim Shvanov
Товарищи программисты, очень нужна ваша помощь. Мой мозг скоро взорвётся к хренам в этой дичью.
Есть достаточно стандартный код, который используется для блочного чтения файлов:

using (var fileReader = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
 using (var binaryReader = new BinaryReader(fileReader))
 {
   while (true)
   {
     var buffer = binaryReader.ReadBytes(_settings.BlockSize);
   }
 }
}

Казалось бы все хорошо, мы должны прочитать из потока fileReader заданное количество бит (blockSize) и сохранить это в массив buffer. На следующей итерации должно выполниться чтение следующего блока и т.д. до конца файла.

Однако, почему-то на второй и последующих итерациях буффер состоит из исключительно из 0. При этом перемещение по файлу идет, fileReader.Position меняется, но актуальные данные не сохраняются в буффер. При этом точно известно, что данные есть. Как такое вообще возможно? что за чертова магия?
Ну как бы когда конец файла readbytes и вернёт уже массив на ноль элементов
источник