如何在c#中读取作为终端输入的二进制文件
How to read a binary file given as input at terminal in c#
我是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",其中文件名.exe是通过编译包含此代码的文件名.cs(通过做"gmcs filename.cs")形成的文件,BinaryFile.cs将是要在我的代码和"mono"上进行测试的binaryfile文件,因为我在Ubantu上工作,我使用"gmcs filename.cs"进行编译,它将给出文件名.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或同等工具)进行构建。希望这能让你走上正确的道路!
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用 (cin) 用户输入将其粘贴到 std::system 中,并在另一个终端中运行带有输入的命令
- 通过终端在文件中输入时检测EOF(文件结束)时出现问题
- 如何在应用程序进行大量printf时,在固定输入的终端中设置最后一行
- 即使可执行文件的输入是从文件重定向的,如何强制从终端输入?
- 您如何在通过终端执行程序时获取用户输入器
- 使用 c++ 和 Xcode 终端的用户输入
- 如何每秒刷新终端并获得用户输入
- 在一行中从终端发送C++输入
- 如何在Linux应用程序上使用C++中的终端输入中断循环/进程
- 如何在终端上显示星号(*)形式的输入密码
- 如何多次尝试输入密码,终端在RAW模式
- 我如何使我完成的程序读取文件,通过终端输入
- 如何检查终端I/O导航时用户是否输入了错误的值
- 终端中的用户输入被截断
- 将终端的输入/输出重定向到iOS JB中的gui
- c++终端应用程序并行输入和输出
- 如何在c#中读取作为终端输入的二进制文件