Проблема с записью в файл
Цитата:
PackFile = new StreamWriter(FileName); //Открыли файл
PackFile.Write(Convert.ToChar(SizeBlock)); //Записали инфу
Size = 1 + SizeBlock * files.Length; //Начальное смещение
foreach (string f in files)
{
byte b1 = (byte)(Size / 256 / 256);
PackFile.Write((char)b1);
byte b2 = (byte)((Size - b1 * 256 * 256) / 256);
PackFile.Write((char)b2);
byte b3 = (byte)(Size - b1 * 256 * 256 - b2 * 256);
PackFile.Write((char)b3);
PackFile.Close();
FileInfo FI = new FileInfo(f); //Получить информацию о файле
Size += FI.Length; //Прибавить его длинну
}
PackFile.Close();
Почему-то пишутся лишнее символы. Вот например: Size = 1981 => b1 = 00, b2 = 07, b3 = bd. А он почему-то записал 0007C2BD!.
Смысл кода?
Пишешь, пишешь на "сипипи", а потом БАЦ! С#. И даже в голову не приходит, что char уже не восьмибитный, а шестнадцати... Эх! срам да и только...
Ещё раз повторю свой вопрос, что ты хочешь сделать, я почти на 100% уверен, что это можно реализовать гораздо проще... а тот код, что ты привёл не навёл меня ни на какие мысли...
Если вам так интересно, то скажу, хотя я уже сам все упростил. Но с удовольствием выслушаю ваш совет. Задача такая: есть куча файлов(~1kb), естесно они жрут дофига дискового пространства.(22 метра вместо 100 килобайтов!). Ну вот я и решил запихнуть их все в один файл. А в этом участке кода я вычисляю смещения на начало каждого файла.
Оформляешь всё в виде XML а потом архивируешь средствами System.IO.Compression (смотри FAQ)