C # Работа с файлами / байтами - PullRequest
2 голосов
/ 25 июля 2010

У меня есть несколько вопросов о редактировании файлов с помощью c #.

Мне удалось прочитать файл в байт [].Как я могу получить код ASCII каждого байта и показать его в текстовой области моей формы?

Кроме того, как я могу изменить байты и затем записать их обратно в файл?

Например:

У меня есть файл, и я знаю, что первые три байта являются буквами.Как я могу изменить, скажем, вторую букву, на «А», а затем сохранить файл?

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 июля 2010

Если файл ASCII, то каждый байт является кодом ASCII. Напечатать значение байта, скажем, для метки, так же просто, как это.

Если вы прочитали свой файл в byte[] file;

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

Чтобы изменить вторую букву на A:

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

или

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

Я не уверен, у меня нет C # на моем Mac для тестирования.

А если серьезно, если это текстовый файл, лучше читать его как текст, а не как 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 , в противном случае нормальные строковые операции будут в порядке.

1 голос
/ 25 июля 2010

Я могу только предположить, что вы хотите попрактиковаться в записи в / из файлов байтом.Вам нужно заглянуть в класс BitConverter , для этого класса есть много помощи.Чтобы прочитать значение, вы должны взять каждый байт в байт [].Если у вас есть ваш байт [], он будет выглядеть примерно так:

string s = BitConverter.ToString(byteArray);

Затем вы можете внести изменения в строковое значение для обратной записи в файл, для которого вы хотите использовать метод GetBytes.

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

Тогда вы можете записать свои байты обратно в файл.

...