如何生成二进制文件?C#

如何生成二进制文件?C#,c#,binaryfiles,binarywriter,C#,Binaryfiles,Binarywriter,我需要制作一个方法,生成一个二进制文件(4字节长),接收整数列表,并在文件中逐个写入该列表。所以,我有这个: public void FrameCodesBinaryWriter(List<int> frameCodes) { using (FileStream fileStream = new FileStream(binaryFilePath, FileMode.Create)) // destiny file directory. { usin

我需要制作一个方法,生成一个二进制文件(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();
        }
    }
}
public void框架代码编写器(列出框架代码)
{
使用(FileStream FileStream=newfilestream(binaryFilePath,FileMode.Create))///destiny文件目录。
{
使用(BinaryWriter BinaryWriter=新的BinaryWriter(fileStream))
{
对于(int i=0;i

这是正确的吗?或者其他解决方案,请

您不需要关闭
binaryWriter
,因为您有一个
using
子句
binaryFilePath
需要是类的一个字段,除此之外,它看起来还可以

您不需要关闭
binaryWriter
,因为您有一个
using
子句
binaryFilePath
需要是类的一个字段,除此之外,它看起来还可以

就目前而言,它应该可以正常工作。这是一个重构版本,您可以选择您喜欢的重构部分

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);
        }
    }
}
public void WriteFrameCodesAsBinary(IEnumerable帧码)
{
使用(FileStream FileStream=newfilestream(binaryFilePath,FileMode.Create))
使用(BinaryWriter BinaryWriter=新的BinaryWriter(fileStream))
{
foreach(帧码中的int帧码){
binaryWriter.Write(框架代码);
}
}
}
我将重命名该函数以描述它将执行的操作
FrameCodesBinaryWriter
听起来更像是一个类名

如果您不需要对
列表进行排序
,那么最好接受
IEnumerable
。这样你可以更灵活地处理你传递的信息

有些人喜欢使用语句来堆叠它们,以移除嵌套层(代码缩进)。就我个人而言,我不是一个超级粉丝,但这是个人品味和风格的问题

使用
IEnumerable
迫使我们使用
foreach
,但即使使用
List
它也可以看起来更清晰/更明显地显示您正在迭代列表


如前所述,如果您正在使用
using
,则无需显式关闭二进制写入程序-这将在退出
using
块时自动完成

就目前而言,它应该可以正常工作。这是一个重构版本,您可以选择您喜欢的重构部分

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);
        }
    }
}
public void WriteFrameCodesAsBinary(IEnumerable帧码)
{
使用(FileStream FileStream=newfilestream(binaryFilePath,FileMode.Create))
使用(BinaryWriter BinaryWriter=新的BinaryWriter(fileStream))
{
foreach(帧码中的int帧码){
binaryWriter.Write(框架代码);
}
}
}
我将重命名该函数以描述它将执行的操作
FrameCodesBinaryWriter
听起来更像是一个类名

如果您不需要对
列表进行排序
,那么最好接受
IEnumerable
。这样你可以更灵活地处理你传递的信息

有些人喜欢使用语句来堆叠它们,以移除嵌套层(代码缩进)。就我个人而言,我不是一个超级粉丝,但这是个人品味和风格的问题

使用
IEnumerable
迫使我们使用
foreach
,但即使使用
List
它也可以看起来更清晰/更明显地显示您正在迭代列表


如前所述,如果您正在使用
using
,则无需显式关闭二进制写入程序-这将在退出
using
块时自动完成

你在考验我们吗?您可以知道它是否正确--测试时发生了什么?文件已生成,但我只想确保它正确提示:您不需要显式调用
binaryWriter
上的Close()。
using
语句负责正确执行此操作。如果要确保它是正确的,为什么不使用
BinaryReader
读回值并检查数字是否相等?这是非常简单的调试。codereview.stackexchange.com的候选者?你在测试我们吗?您可以知道它是否正确--测试时发生了什么?文件已生成,但我只想确保它正确提示:您不需要显式调用
binaryWriter
上的Close()。
using
语句负责正确执行此操作。如果要确保它是正确的,为什么不使用
BinaryReader
读回值并检查数字是否相等?这是非常简单的调试。codereview.stackexchange.com的候选者?