c# - 如何在 C# 中读取作为终端输入的二进制文件

标签 c# c++ algorithm binary binaryfiles

<分区>

我是 c# 的新手,正在尝试读取二进制文件。我在 C++ 中这样做是这样的:

int main(int argc, char * * argv) 
{
    FILE * fp;
    fp = fopen(argv[1], "rb"); //argv[1] because while executing at terminal the binary file to be read is at second postion like "./filename.c BinaryInutFile.bin" so at argv[0] we have ./filename.c and at argv[1] we have Binaryfile.bin
    ch = fgetc(fp);
    while (fread( & ch, sizeof(ch), 1, fp)) 
    {
        add_symbol(ch); //this add_symbol()i will use somewhere else, so not so important for now.
    }
    fclose(fp); 
}

所以我需要帮助编写等效的 C# 代码。感谢帮助者。 注意:我也不知道文件的大小和文件名,但它是一个二进制文件,我的意思是用户可以在终端更改二进制文件,它应该适用于他检查输出的所有二进制文件数。 我将在终端执行这样的“mono filename.exe BinaryFile.bin”,其中 filename.exe 是通过编译包含此代码和 BinaryFile 的 filename.cs(通过执行“gmcs filename.cs”)形成的文件。 cs 将是要在我的代码和我使用的“mono”上测试的 bbianry 文件,因为我在 Ubantu 上工作,我使用“gmcs FileName.cs”编译,它将提供 Filename.exe,然后将其作为“mono 文件名”执行。 exe BinaryFile.bin"

最佳答案

在 C# 中有很多读取文件的方法。如果你想要一个流方法,它看起来像:

public static void Main(string[] args)
{
    // your command line arguments will be in args
    using (var stream = new BinaryReader(System.IO.File.OpenRead(args[0])))
    {
        while (stream.BaseStream.Position < stream.BaseStream.Length)
        {
            // all sorts of functions for reading here:
            byte processingValue = stream.ReadByte();
        }
    }
}

如果您正在处理较小的文件,还可以选择通过以下调用将整个文件读入内存(字符串变量):

string entireFile = System.IO.File.ReadAllText(fileNamePath);

两者都很好 - 使用将取决于您的情况。祝你好运!

EDIT - 编辑示例以包含一个主例程,以便进行演示。要使用此示例,您需要创建一个“控制台应用程序”项目并使用 visual studio 或使用命令行 ( MSBuild or equivalent) 进行构建。希望这能让您走上正确的道路!

关于c# - 如何在 C# 中读取作为终端输入的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22299589/

相关文章:

c# - 如何将 ASP.NET Web Api 项目与托管 mySQL 数据库连接?

c# - 使用通配符或递归进行 App.config 运行时探测

c++ - EOS CDT : where are the *. h 和文件系统中存储的 *.cpp 文件,我需要引用它们来编译

c++ - 模幂(模算术中的幂)

c++ - 将图像转换为有限大小的调色板的好算法是什么

c# - 动态 Linq 在 GroupBy 之后选择组中的第一个

c# - C# 只是在分配给另一个字段时复制字段数据还是引用数据?

C++ vector 大小为零

c++ - 检索数据结构对齐信息

arrays - 力扣 : Four Sum