2010-07-25 3 views
2

У меня есть вопросы по редактированию файлов с помощью C#.C# Работа с файлами/байтами

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

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

Например:

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

Спасибо!

ответ

1

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

string s = BitConverter.ToString(byteArray); 

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

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

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

1

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

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

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

Чтобы изменить второе письмо A:

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

Или

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

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

Если серьезно, если это текстовый файл, вы лучше читаете его как текст, а не как 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(); 

И это будет работать, если файл Юникода, а также.

Затем вы можете получить значения Юникода (что для большинства латинских символов совпадает с значением ASCII): int value = (int)myString[5]; или около того.

Вы можете затем записать обратно в файл следующим образом:

System.IO.File.WriteAllText("c:\\test.txt", myString); 

Если вы собираетесь делать большие изменения в тексте, вы должны использовать StringBuilder, в противном случае, обычные операции со строками будет хорошо.

+0

См. Также «Файл.ReadAllText "," File.ReadAllLines "," Как читать текст из файла "," Как записывать текст в файл "в MSDN. – adf88