private static void ReadDat(FileInfo[] fis, string subPath, uint ParentId) { foreach (FileInfo f in fis) { _datsProcessed++; _bgw.ReportProgress(_datsProcessed); uint datId = FindDAT.Execute(subPath, f.Name, f.LastWriteTime); if (datId > 0) continue; _bgw.ReportProgress(0, new bgwText("Dat : " + subPath + @"\" + f.Name)); RvDat rvDat; if (DatReader.DatReader.ReadDat(f.FullName, f.LastWriteTime, _bgw, out rvDat)) { rvDat.DirId = ParentId; DataAccessLayer.ExecuteNonQuery("BEGIN"); rvDat.DbWrite(); DataAccessLayer.ExecuteNonQuery("COMMIT"); } if (_bgw.CancellationPending) return; } }
public FileInfo[] GetFiles(string SearchPattern, bool includeHidden = true) { List<FileInfo> files = new List<FileInfo>(); string dirName = NameFix.AddLongPathPrefix(FullName); Win32Native.WIN32_FIND_DATA findData = new Win32Native.WIN32_FIND_DATA(); SafeFindHandle findHandle = Win32Native.FindFirstFile(dirName + @"\" + SearchPattern, findData); if (!findHandle.IsInvalid) { do { string currentFileName = findData.cFileName; // if this is a directory, find its contents if ((findData.dwFileAttributes & Win32Native.FILE_ATTRIBUTE_DIRECTORY) != 0) continue; if (!includeHidden && (findData.dwFileAttributes & Win32Native.FILE_ATTRIBUTE_HIDDEN) != 0) continue; FileInfo fi = new FileInfo { Name = currentFileName, FullName = Path.Combine(FullName, currentFileName), Length = Convert.Length(findData.nFileSizeHigh, findData.nFileSizeLow), LastWriteTime = Convert.Time(findData.ftLastWriteTimeHigh, findData.ftLastWriteTimeLow), fileAttributes = findData.dwFileAttributes }; files.Add(fi); } while (Win32Native.FindNextFile(findHandle, findData)); } // close the find handle findHandle.Dispose(); return files.ToArray(); }