【发布时间】:2010-07-25 01:57:26
【问题描述】:
我有一些关于使用 c# 编辑文件的问题。
我已经设法将一个文件读入一个字节[]。如何获取每个字节的 ASCII 码并将其显示在表单的文本区域中?
另外,如何更改字节然后将它们写回文件?
例如:
我有一个文件,我知道前三个字节是字母。如何将第二个字母改为“A”,然后保存文件?
谢谢!
【问题讨论】:
标签: c# visual-studio file-io io byte
我有一些关于使用 c# 编辑文件的问题。
我已经设法将一个文件读入一个字节[]。如何获取每个字节的 ASCII 码并将其显示在表单的文本区域中?
另外,如何更改字节然后将它们写回文件?
例如:
我有一个文件,我知道前三个字节是字母。如何将第二个字母改为“A”,然后保存文件?
谢谢!
【问题讨论】:
标签: c# visual-studio file-io io byte
如果文件是 ASCII,那么每个字节都是 ASCII 码。将字节的值打印到标签上,就是这么简单。
如果您已将文件读入byte[] file;
label1.Text = file[1].ToString();
将第二个字母改为 A:
file[1] = (byte)'A';
或者
file[1] = (byte)(int)'A';
我不确定,我的 Mac 上没有 C# 可供测试。
但是说真的,如果它是一个文本文件,你最好以文本的形式阅读它,而不是 byte[]。您可能想使用StringBuilder
// Read the file as one string.
System.IO.StreamReader myFile =
new System.IO.StreamReader("c:\\test.txt");
string myString = myFile.ReadToEnd();
myFile.Close();
如果文件也是 unicode,这将起作用。
然后,您可以获得 Unicode 值(对于大多数拉丁字符而言,它与 ASCII 值相同),如下所示:int value = (int)myString[5]; 左右。
然后您可以像这样写回文件:
System.IO.File.WriteAllText("c:\\test.txt", myString);
如果要对文本进行大量修改,则应使用StringBuilder,否则,正常的字符串操作就可以了。
【讨论】:
我只能假设您想练习按字节写入/写入文件。您需要查看课程BitConverter,该课程有很多帮助。要读入一个值,您会将每个字节放入一个字节[]。一旦你有了你的 byte[],它会看起来像这样。
string s = BitConverter.ToString(byteArray);
然后您可以对字符串值进行调整,以便回写到您想要使用 GetBytes 方法的文件。
byte[] newByteArray = BitConveter.GetBytes(s);
然后你可以将你的字节写回你的文件。
【讨论】: