public void Persist(IndexDatabase indexDatabase) { IFormatter binaryFormatter = new BinaryFormatter(); string appDataFolderPath = Environment.GetEnvironmentVariable("appdata"); Directory.CreateDirectory(string.Format("{0}\\{1}",appDataFolderPath,"KMPSearcher")); string indexDatabaseFileName = string.Format("{0}\\KMPSearcher\\KMPIDB.db", appDataFolderPath); using (Stream idbStream = new FileStream(indexDatabaseFileName, FileMode.Create, FileAccess.Write)) { binaryFormatter.Serialize(idbStream, indexDatabase); idbStream.Close(); } }
public void TestIndexDatabaseSerialization() { IndexRecord indexRecord1 = new IndexRecord(@"C:\DummyFile.txt",new List<int>() { 1,2,3,4,5 }); IndexRecord indexRecord2 = new IndexRecord(@"C:\DummyFile1.txt", new List<int>() { 1, 2, 3 }); List<IndexRecord> indexRecords = new List<IndexRecord>() { indexRecord1, indexRecord2 }; Dictionary<string,List<IndexRecord>> searchPatternToIndexRecords = new Dictionary<string,List<IndexRecord>>(); searchPatternToIndexRecords.Add("Test",indexRecords); IndexDatabase indexDatabase = new IndexDatabase(searchPatternToIndexRecords,DateTime.Now); //serialize the index database IndexDatabaseWriter writer = new IndexDatabaseWriter(); writer.Persist(indexDatabase); }
private void FetchFilesAndIndex(string[] filePathsToIndex) { foreach (string filePath in filePathsToIndex) { _directoryTreeWalker = new DirectoryTreeWalker(); _directoryTreeWalker.SearchSubDirectories = true; _directoryTreeWalker.WalkTheTree(filePath); List<string> files = _directoryTreeWalker.Files; IndexInternal(files); } _indexDatabase = new IndexDatabase(_indexDatabaseEntries, DateTime.UtcNow); //persist the entire database to the disk IndexDatabaseWriter idbWriter = new IndexDatabaseWriter(); idbWriter.Persist(_indexDatabase); }