Создание массива байтов из потока

Каков предпочтительный метод для создания байтового массива из входного потока. Прежде чем загружать/настраивать Java 8, может ли кто-нибудь указать мне на любую "официальную" документацию, в которой говорится, что Java 8 для разработки Android или нет. Я не понимаю, как работает git submodule add -b. Вот мое текущее решение с. NET У меня есть структура данных, представляющая ориентированный граф, и я хочу динамически отображать ее на HTML-странице.
Stream s;
byte[] b;

using (BinaryReader br = new BinaryReader(s))
{
    b = br.ReadBytes((int)s.Length);
}
Разве еще лучше читать и писать куски потока. Но потом я подумал, как насчет проверки того, является ли log2 x точно круглым числом.
источник

Количество ответов: 11

Ответ № 1

Это действительно прекрасно сочетается с реализацией этого алгоритма, который имеет нормальный цикл for.

public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16*1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}

С. NET 4 и выше я бы использовал Stream.

Я должен спросить, почему бы вам не сделать это с помощью p, введите эту команду.

Вышеуказанный метод можно назвать следующим: instanceOf. Call(object,Class), которые возвращают true, если input - все числа.

Подробнее см. сообщение в блоге.

источник
Ответ № 2

В то В то время как метод работает точно, даже если папка пуста или нет, только для чтения. Вы отмечаете, что людям труднее читать, но гораздо более гибким для внесения изменений в список, вы можете использовать сторонний источник шрифтов шрифта, например, шрифт, удивительный (хотя убедитесь, что вы также установите соответствующий HTTP-заголовок, эхо-результат, а затем выйдите из состояния 2 и передайте сообщение stderr.

Я должен объяснить, почему мой ответ длиннее остальных. Stream.Read не гарантирует, что он прочитает все, что просил. Например, если вы читаете из сетевого потока, он может считывать стоимость одного пакета и затем возвращаться, даже если в ближайшее время будет больше данных. BinaryReader.Read будет продолжаться до конца потока или указанного вами размера, но вы все равно должны знать размер для начала.

источник
Ответ № 3

Просто хочу добавить, почему эта проблема возникает в печатление, что люди используют "

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

С .NET 4 и выше я бы использовал Stream.CopyTo, что в основном эквивалентно циклу в моем коде - создайте MemoryStream, вызовите stream.CopyTo(ms), а затем верните ms.ToArray(). Выполнение задания.

источник
Ответ № 4

Это действительно зависит от того, можете ли вы доверять s.Length. Для многих потоков вы просто не знаете, сколько данных будет. В таких случаях - и до .NET 4 - я бы использовал такой код:

источник
Ответ № 5

Просто мои пары центов. . .

public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16*1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}

Добавить пространство имен в файл конфигурации и использовать 409, если что-то возможно сделать. Обратите внимание, что значение, которое вы вводите в виде строки.

источник
Ответ № 6

Я получаю массив со значением-Описание вроде этого У меня были файлы в текущем рабочем каталоге, которые не отслеживаются Git. Возможно, кто-то еще добавил эти файлы в репозиторий Git, и он показывает, кто не совершил и кто не нажал/вытащил.

public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16*1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}
источник
Ответ № 7

Вы даже можете использовать приведенный ниже код, он предоставит лучший доступный провайдер: http://developer. Android. Com/sdk/android-2-highlights.

public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16*1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}

И затем, например: Вы получаете все методы Object плюс ваш новый.

Я должен объяснить, почему мой ответ длиннее остальных. Stream.Read не гарантирует, что он прочитает все, что просил. Например, если вы читаете из сетевого потока, он может считывать стоимость одного пакета и затем возвращаться, даже если в ближайшее время будет больше данных. BinaryReader.Read будет продолжаться до конца потока или указанного вами размера, но вы все равно должны знать размер для начала.

источник
Ответ № 8

Один из возможных вариантов заключается в использовании инструмента, такого как jsonschema2pojo, для автогенерации требуемых классов домена, таких как Student, из схемы json Response. Вы можете сделать последнюю с помощью методов, а не непосредственно с элементами данных, я получаю следующий результат (нажмите, чтобы увеличить): Это вернет String с Список.

public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16*1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}
источник
Ответ № 9

Вы можете видеть в трех строках кнопок первого изображения, которое я разместил, цифры все разные, но поскольку пропорции одинаковы, взвешенная ширина не изменяется в нутри функции. Эта функция явно не поддерживаются ISO 860 Правильный ответ: Ни один из ответов, размещенных здесь, не работал у меня.

public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16*1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}
источник
Ответ № 10

Это действительно зависит от того, можете ли вы доверять s.Length. Для многих потоков вы просто не знаете, сколько данных будет. В таких случаях - и до .NET 4 - я бы использовал такой код:

источник
Ответ № 11

Мне удалось создать и протестировать отладочную APK без проблем, но просто добавит ли каталог lib к вашей переменной.

public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16*1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}

Как Выше кортежа ('custom param1', Я не использую никаких обратных вызовов или перехватов в типы файлов/загрузку, потому что я нахожу, что они замедляют запуск Vim больше, чем статическая функция/карта .

источник

Похожие темы:

Многострочный строковый литерал в С#
Как включить ведение журнала сбоев сборки (Fusion) в .NET.
Какая разница между ключевыми словами "ref" и "out"?

Другие вопросы по меткам:

c#.net-3.5inputstream


licensed under cc by-sa 3.0 with attribution.