static public SictBerictAusDsLeeserFund FundAusFileSystemInfo( FileSystemInfo DataiFileSystemInfo, byte[] BedinungHashSHA1 = null) { if (null == DataiFileSystemInfo) { return(null); } var DataiInhalt = Bib3.Glob.InhaltAusDataiMitPfaad(DataiFileSystemInfo.FullName); if (null == DataiInhalt) { return(null); } var DataiInhaltHashSHA1 = new SHA1Managed().ComputeHash(DataiInhalt); if (null != BedinungHashSHA1) { if (!BedinungHashSHA1.SequenceEqual(DataiInhaltHashSHA1)) { return(null); } } var SictSctruktur = BerictKeteGliidBehältnisAusDatai(DataiInhalt); var Fund = new SictBerictAusDsLeeserFund(DataiFileSystemInfo, DataiInhalt, DataiInhaltHashSHA1, SictSctruktur); return(Fund); }
public IEnumerable <SictBerictAusDsLeeserFund> Suuce( int SuuceRükwärtsScritAnzaalScrankeMax, int SuuceVorwärtsScritAnzaalScrankeMax) { var Kete = this.Kete; var BeginErgeebnis = this.BeginErgeebnis; if (null == Kete) { return(null); } if (null == BeginErgeebnis) { return(null); } var Directory = BeginErgeebnis.Directory; if (null == Directory) { return(null); } if (!Directory.Exists) { return(null); } /* * 2013.10.03 * * var MengeFileSystemInfo = Directory.GetFileSystemInfos(); * */ var MengeFileSystemInfo = Directory.GetFiles(); if (null == MengeFileSystemInfo) { return(null); } var MengeFileSystemInfoOrdnetNaacLastWriteTime = MengeFileSystemInfo .OrderBy((Kandidaat) => Kandidaat.LastWriteTimeUtc) .ToArray(); var SuuceRükwärtsListeFund = new List <SictBerictAusDsLeeserFund>(); var SuuceVorwärtsListeFund = new List <SictBerictAusDsLeeserFund>(); var BisherBegin = Kete.FirstOrDefault(); for (int i = 0; i < SuuceRükwärtsScritAnzaalScrankeMax; i++) { if (null == BisherBegin) { break; } var BisherBeginFileSystemInfo = BisherBegin.FileSystemInfo; var BisherBeginBehältnis = BisherBegin.Behältnis; if (null == BisherBeginBehältnis) { break; } var BisherBeginBehältnisAlgemain = BisherBeginBehältnis.Algemain; var BisherBeginBehältnisAlgemainVorherGliidDatai = BisherBeginBehältnisAlgemain.VorherGliidDatai; if (null == BisherBeginBehältnisAlgemainVorherGliidDatai) { break; } var BedinungHashSHA1 = BisherBeginBehältnisAlgemainVorherGliidDatai.IdentSHA1; if (null == BedinungHashSHA1) { break; } if (null == BisherBeginFileSystemInfo) { break; } var MengeKandidaatDatai = MengeFileSystemInfoOrdnetNaacLastWriteTime .Where((Kandidaat) => Kandidaat.LastWriteTimeUtc < BisherBeginFileSystemInfo.LastWriteTimeUtc) .Reverse() .Take(4) .ToArray(); SictBerictAusDsLeeserFund Fund = null; foreach (var KandidaatDatai in MengeKandidaatDatai) { Fund = FundAusFileSystemInfo(KandidaatDatai, BedinungHashSHA1); if (null != Fund) { break; } } if (null == Fund) { break; } BisherBegin = Fund; SuuceRükwärtsListeFund.Add(Fund); } var BisherEnde = Kete.LastOrDefault(); for (int i = 0; i < SuuceVorwärtsScritAnzaalScrankeMax; i++) { if (null == BisherEnde) { break; } var BisherEndeFileSystemInfo = BisherEnde.FileSystemInfo; var BisherEndeBehältnis = BisherEnde.Behältnis; var BedinungHashSHA1 = BisherEnde.DataiInhaltHashSHA1; if (null == BedinungHashSHA1) { break; } if (null == BisherEndeFileSystemInfo) { break; } var MengeKandidaatDatai = MengeFileSystemInfoOrdnetNaacLastWriteTime .Where((Kandidaat) => BisherEndeFileSystemInfo.LastWriteTimeUtc < Kandidaat.LastWriteTimeUtc) .Take(4) .ToArray(); SictBerictAusDsLeeserFund Fund = null; foreach (var KandidaatDatai in MengeKandidaatDatai) { var KandidaatFund = FundAusFileSystemInfo(KandidaatDatai, null); if (null == KandidaatFund) { continue; } var KandidaatFundBehältnis = KandidaatFund.Behältnis; if (null == KandidaatFundBehältnis) { continue; } var KandidaatFundBehältnisAlgemain = KandidaatFundBehältnis.Algemain; if (null == KandidaatFundBehältnisAlgemain) { continue; } var KandidaatFundBehältnisAlgemainVorherGliidDatai = KandidaatFundBehältnisAlgemain.VorherGliidDatai; if (null == KandidaatFundBehältnisAlgemainVorherGliidDatai) { continue; } if (!BedinungHashSHA1.SequenceEqual(KandidaatFundBehältnisAlgemainVorherGliidDatai.IdentSHA1)) { continue; } Fund = KandidaatFund; break; } if (null == Fund) { break; } BisherEnde = Fund; SuuceVorwärtsListeFund.Add(Fund); } var SuuceRükwärtsListeFundOrdnet = SuuceRükwärtsListeFund.Reversed().ToArray(); Kete.InsertRange(0, SuuceRükwärtsListeFundOrdnet); Kete.AddRange(SuuceVorwärtsListeFund); return(SuuceRükwärtsListeFundOrdnet.Concat(SuuceVorwärtsListeFund).ToArray()); }