【问题标题】:C# Working with files/bytesC# 处理文件/字节
【发布时间】:2010-07-25 01:57:26
【问题描述】:

我有一些关于使用 c# 编辑文件的问题。

我已经设法将一个文件读入一个字节[]。如何获取每个字节的 ASCII 码并将其显示在表单的文本区域中?

另外,如何更改字节然后将它们写回文件?

例如:

我有一个文件,我知道前三个字节是字母。如何将第二个字母改为“A”,然后保存文件?

谢谢!

【问题讨论】:

    标签: c# visual-studio file-io io byte


    【解决方案1】:

    如果文件是 ASCII,那么每个字节都是 ASCII 码。将字节的值打印到标签上,就是这么简单。

    如果您已将文件读入byte[] file;

    label1.Text = file[1].ToString();
    

    将第二个字母改为 A:

    file[1] = (byte)'A';
    

    或者

    file[1] = (byte)(int)'A';
    

    我不确定,我的 Mac 上没有 C# 可供测试。

    但是说真的,如果它是一个文本文件,你最好以文本的形式阅读它,而不是 byte[]。您可能想使用StringBuilder

    来操作它

    首先,致read it in as a string

    // 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,否则,正常的字符串操作就可以了。

    【讨论】:

    • 另请参见 MSDN 上的“File.ReadAllText”、“File.ReadAllLines”、“如何:从文件中读取文本”、“如何:将文本写入文件”。
    【解决方案2】:

    我只能假设您想练习按字节写入/写入文件。您需要查看课程BitConverter,该课程有很多帮助。要读入一个值,您会将每个字节放入一个字节[]。一旦你有了你的 byte[],它会看起来像这样。

    string s = BitConverter.ToString(byteArray);
    

    然后您可以对字符串值进行调整,以便回写到您想要使用 GetBytes 方法的文件。

    byte[] newByteArray = BitConveter.GetBytes(s);
    

    然后你可以将你的字节写回你的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 2020-11-14
      • 1970-01-01
      • 2012-06-15
      • 2011-06-03
      相关资源
      最近更新 更多