Как сгенерировать бинарный файл? C # - PullRequest
1 голос
/ 18 апреля 2011

Мне нужно создать метод, который генерирует двоичный файл (длиной 4 байта), получает список целых чисел и записывает этот список по одному в файл.Итак, у меня есть это:

public void FrameCodesBinaryWriter(List<int> frameCodes)
{
    using (FileStream fileStream = new FileStream(binaryFilePath,  FileMode.Create)) // destiny file directory.
    {
        using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
        {
            for (int i = 0; i < frameCodes.Count; i++)
            {
                binaryWriter.Write(frameCodes[i]);
            }
            binaryWriter.Close();
        }
    }
}

это правильно?или другое решение, пожалуйста

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Как это должно работать нормально.Вот реорганизованная версия, вы можете выбрать, какие биты рефакторинга вам нравятся.

public void WriteFrameCodesAsBinary(IEnumerable<int> frameCodes)
{
    using (FileStream fileStream = new FileStream(binaryFilePath,  FileMode.Create))
    using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
    {
        foreach (int frameCode in frameCodes) {
            binaryWriter.Write(frameCode);
        }
    }
}

Я бы переименовал функцию, чтобы описать действие, которое она будет выполнять.FrameCodesBinaryWriter для меня больше похоже на название класса.

Если вам не нужно упорядочивать List<T>, возможно, было бы лучше принять IEnumerable<T>.Таким образом, вы можете быть более гибкими в отношении того, что вы передаете.

Некоторые люди предпочитают составлять свои операторы использования, чтобы удалить уровень вложенности (отступ кода).Лично я не большой поклонник этого, но это вопрос личного вкуса и стиля.

Использование IEnumerable<T> заставляет нас использовать foreach, но даже с List<T> это может выглядеть чище/ сделать более очевидным, что вы перебираете список.

Как уже упоминалось ранее, если вы используете using, вам не нужно явно закрывать двоичный модуль записи - это будет сделано автоматически, когда using блок снят.

0 голосов
/ 18 апреля 2011

Вам не нужно закрывать binaryWriter, потому что у вас все равно есть предложение using. binaryFilePath должно быть полем класса, кроме того, оно выглядит нормально.

...