- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
internal class Log
{
public static void WriteLine(string methodName, UpdateFile file, Exception e, LogType type = LogType.Success)
{
using (FileStream fileStream = new FileStream(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\patch.log", FileMode.OpenOrCreate))
{
using (StreamReader streamReader = new StreamReader(fileStream))
{
using (StreamWriter streamWriter = new StreamWriter(fileStream))
{
streamWriter.WriteLine(string.Format("Launcher | {0} | {1} | {2} | {3} | {4}", new object[]
{
type,
methodName,
file.FullPath,
e,
DateTime.Now
}), streamReader.ReadToEnd().Length);
}
}
}
}
...
Как получить размер файла? Правильно, надо прочитать его в память и взять размер данных из памяти :facepalm:
Зачем получать размер файла, даже не спрашивайте ))
Источник: hxxp://promo.riseofrunes.com/InstLauncher.zip (C#, декомпилятор).
A: А вдруг файловая система вернёт неверный размер файла?
B: Ну, считаем весь файл в память и посчитаем размер в памяти.
A: А вдруг файловая система выдаст не всё содержимое файла?
B: ...
На планках без ECC это заканчивается всякими рандомными багами...
Да и для вычисления чексуммы в первый раз ты файл тоже с диска считаешь, а им верить нельзя.
Может, конечно, ты в уме мд5 умеешь, и хорошо запоминаешь, но нафиг суммы, лучше тогда сразу запоминай сами файлы.
На тот же носитель. Один хер все чексуммы и коды коррекции только с определённой вероятностью работают...
Смотри, есть два носителя: на какой сам сохранишь, с какого для матери считаешь?
Что это за изврат такой?
А это уже разврат