我是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将是我的代码上测试的bbianry文件和我使用的“mono”,因为我正在使用Ubantu并使用“gmcs FileName.cs”进行编译,这将给出Filename.exe,然后将其作为“mono filename”执行。 exe BinaryFile.bin“
答案 0 :(得分:1)
有很多方法可以在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);
要么效果很好 - 使用取决于你的情况。祝你好运!
编辑 - 编辑示例以包含主程序,以便进行演示。要使用此示例,您需要创建一个“控制台应用程序”项目,并使用visual studio或使用命令行(MSBuild or equivalent)进行构建。希望能让你走上正轨!