private async Task OnGetImportFileOrDirectoryAsync(GetImportFileOrDirectory rpc) { long t1 = Bright.Time.TimeUtil.NowMillis; var file = rpc.Arg.FileOrDirName; var suffixes = rpc.Arg.InclusiveSuffixs; var re = new GetImportFileOrDirectoryRes() { SubFiles = new List <Luban.Common.Protos.FileInfo>(), }; try { if (Directory.Exists(file)) { re.Err = 0; re.IsFile = false; foreach (var subFile in Directory.GetFiles(file, "*", SearchOption.AllDirectories)) { if (FileUtil.IsValidInputFile(subFile) && (suffixes.Count == 0 || suffixes.Any(s => subFile.EndsWith(s)))) { var md5 = await CacheMetaManager.Ins.GetOrUpdateFileMd5Async(subFile); re.SubFiles.Add(new Luban.Common.Protos.FileInfo() { FilePath = FileUtil.Standardize(subFile), MD5 = md5 }); } } } else if (File.Exists(file)) { re.IsFile = true; re.Md5 = await CacheMetaManager.Ins.GetOrUpdateFileMd5Async(file); } else { re.Err = Luban.Common.EErrorCode.FILE_OR_DIR_NOT_EXISTS; } } catch (Exception e) { re.Err = Luban.Common.EErrorCode.READ_FILE_FAIL; s_logger.Error(e); } s_logger.Trace(" GetImportFileOrDirectory file:{file} err:{err} cost:{time}", file, re.Err, Bright.Time.TimeUtil.NowMillis - t1); Session.ReplyRpc <GetImportFileOrDirectory, GetImportFileOrDirectoryArg, GetImportFileOrDirectoryRes>(rpc, re); }
public async Task <GetImportFileOrDirectoryRes> GetFileOrDirectoryAsync(string file, params string[] searchPatterns) { long t1 = TimeUtil.NowMillis; var re = new GetImportFileOrDirectoryRes() { SubFiles = new List <Luban.Common.Protos.FileInfo>(), }; var suffixes = new List <string>(searchPatterns.Select(s => s.Trim()).Where(s => !string.IsNullOrWhiteSpace(s))); try { if (Directory.Exists(file)) { re.Err = 0; re.IsFile = false; foreach (var subFile in Directory.GetFiles(file, "*", SearchOption.AllDirectories)) { if (FileUtil.IsValidInputFile(subFile) && (suffixes.Count == 0 || suffixes.Any(s => subFile.EndsWith(s)))) { var md5 = FileUtil.CalcMD5(await FileUtil.ReadAllBytesAsync(subFile)); re.SubFiles.Add(new Luban.Common.Protos.FileInfo() { FilePath = FileUtil.Standardize(subFile), MD5 = md5 }); } } } else if (File.Exists(file)) { re.IsFile = true; re.Md5 = FileUtil.CalcMD5(await FileUtil.ReadAllBytesAsync(file)); } else { re.Err = Luban.Common.EErrorCode.FILE_OR_DIR_NOT_EXISTS; } } catch (Exception e) { re.Err = Luban.Common.EErrorCode.READ_FILE_FAIL; s_logger.Error(e); } s_logger.Trace(" GetImportFileOrDirectory file:{file} err:{err} cost:{time}", file, re.Err, TimeUtil.NowMillis - t1); return(re); }