0
当我删除使用填充文件夹中删除不释放空间立即
DirectoryInfo.Delete(true)
值一个文件夹来
DriveInfo.AvailableFreeSpace
几乎保持不变。例如,当我在检查availablefreespace
时删除循环中的文件夹时,我最终删除了千兆字节和千兆字节的数据,当它应该删除少于一个千兆字节时。
//Delete in secondary storage
string secondaryRoot = Path.GetPathRoot(settings.SecondaryFeatureExtractDirectory);
DriveInfo secondaryDrive = new DriveInfo(secondaryRoot);
DirectoryInfo secondaryInfo = new DirectoryInfo(settings.SecondaryFeatureExtractDirectory);
while ((secondaryDrive.TotalSize - secondaryDrive.AvailableFreeSpace)/secondaryDrive.TotalSize * 100 < settings.DriveFreePercentage)
{
logger.LogInformation("checkForCleanup before delete: {@Freespace}", secondaryDrive.AvailableFreeSpace);
secondaryThresholdPassed = true;
DirectoryInfo oldestDir = secondaryInfo.EnumerateDirectories().OrderBy(x => x.LastWriteTimeUtc).FirstOrDefault();
if (oldestDir == null) break;
oldestDir.Delete(true);
logger.LogDebug("checkForCleanup deleted: {@DirectoryName}", oldestDir.FullName);
logger.LogInformation("checkForCleanup after delete: {@Freespace}", secondaryDrive.AvailableFreeSpace);
Thread.Sleep(1);
}
有没有什么是解决此使用C#和dotnetcore?
这将使用整数运算,因此它将为100或0. –
@mwwhited你能解释一下吗?我不知道如何'(secondaryDrive.TotalSize - secondaryDrive.AvailableFreeSpace)/ secondaryDrive.TotalSize * 100'将被约束为0或100. – Theyouthis
这些值都是整数值(真的很长......但同样的想法)。因此,他们不会有任何十进制值。想想'(100-90)/ 100'。这将等于'.9',但是是整数值,最大的整数是'0' –