mirror of https://github.com/tuyoogame/YooAsset
63 lines
1.9 KiB
C#
63 lines
1.9 KiB
C#
using System;
|
|
using System.IO;
|
|
|
|
namespace YooAsset
|
|
{
|
|
internal sealed class ClearAllCacheManifestFilesOperation : FSClearCacheFilesOperation
|
|
{
|
|
private enum ESteps
|
|
{
|
|
None,
|
|
ClearAllCacheFiles,
|
|
Done,
|
|
}
|
|
|
|
private readonly DefaultCacheFileSystem _fileSystem;
|
|
private ESteps _steps = ESteps.None;
|
|
|
|
|
|
internal ClearAllCacheManifestFilesOperation(DefaultCacheFileSystem fileSystem)
|
|
{
|
|
_fileSystem = fileSystem;
|
|
}
|
|
internal override void InternalOnStart()
|
|
{
|
|
_steps = ESteps.ClearAllCacheFiles;
|
|
}
|
|
internal override void InternalOnUpdate()
|
|
{
|
|
if (_steps == ESteps.None || _steps == ESteps.Done)
|
|
return;
|
|
|
|
if (_steps == ESteps.ClearAllCacheFiles)
|
|
{
|
|
try
|
|
{
|
|
// 注意:如果正在下载资源清单,会有几率触发异常!
|
|
string directoryRoot = _fileSystem.GetCacheManifestFilesRoot();
|
|
DirectoryInfo directoryInfo = new DirectoryInfo(directoryRoot);
|
|
if (directoryInfo.Exists)
|
|
{
|
|
foreach (FileInfo fileInfo in directoryInfo.GetFiles())
|
|
{
|
|
string fileName = fileInfo.Name;
|
|
if (fileName == DefaultCacheFileSystemDefine.AppFootPrintFileName)
|
|
continue;
|
|
|
|
fileInfo.Delete();
|
|
}
|
|
}
|
|
|
|
_steps = ESteps.Done;
|
|
Status = EOperationStatus.Succeed;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_steps = ESteps.Done;
|
|
Error = ex.Message;
|
|
Status = EOperationStatus.Failed;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |