Синхронизировать файл Syn c при использовании Azure Sync - PullRequest
0 голосов
/ 09 января 2020

Я столкнулся с проблемой, которая связана с хранилищем файлов, которое использует Azure File Syn c для отправки старых файлов на Azure. В обычном сценарии windows вы все равно увидите файлы, которые хранятся в основной таблице файлов. Тем не менее, физический размер на диске будет 0 байтов.

Я использую следующее для обнаружения 0-байтового файла:

    public static bool IsZeroByteFile(string filePath)
    {
        uint hosize;
        uint losize = GetCompressedFileSizeW(filePath, out hosize);
        return losize == 0;
    }

    [DllImport("kernel32.dll")]
    static extern uint GetCompressedFileSizeW([In, MarshalAs(UnmanagedType.LPWStr)] string lpFileName,
       [Out, MarshalAs(UnmanagedType.U4)] out uint lpFileSizeHigh);

Я пробовал следующее, чтобы вызвать файл syn c:
1) File.ReadAllBytes который содержит все байты, но не заставляет файл хранить физические байты.
2) File.SetLastWriteTimeUtc(filePath, DateTime.UtcNow), который устанавливает дату изменения, но не вызывает Azure Syn c

Я мог бы использовать считанные байты, чтобы перезаписать один и тот же файл, но хотел бы избежать необходимости читать все байты в первую очередь из-за больших файлов, а также избежать изменения даты изменения.

...