private static object locker = new object();
private async Task checkFile(string path)
{
var fileType = await getFileAsync(path);
if (fileType.FileExtension != "None")
{
lock(locker){
this.filesMap.Add(path, fileType);
}
}
}
/// <summary>
/// Get bytes from file
/// </summary>
/// <param name="path">path to file</param>
/// <param name="startByte">0 based position</param>
/// <param name="bytesToRead">Count of bytes to read</param>
/// <returns></returns>
public static string[] GetXData(string path, int startByte, int bytesToRead)
{
try
{
var header = new string[bytesToRead];
using var stream = File.OpenRead(path);
stream.Seek(startByte, SeekOrigin.Begin); // перемещаем указатель в позицию
// увеличиваем от 0 до длины буфера!!!
for (var i = 0; i < header.Length ; i++)
{
// когда читаем по байту сдвиг указателя происходит автоматически
header[i] = (stream.ReadByte().ToString("X2"));
}
return header;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
return new string[0];
}
}