public void Initialize(string settingFolder, string settingFile) { if (string.IsNullOrEmpty(settingFolder) || string.IsNullOrEmpty(settingFile)) { Debug.WriteLine("Couldn't init empty setting folder and setting file name"); return; } _settingFolder = settingFolder; _settingFile = settingFile; _filePath = _fileStore.PathCombine(_settingFolder, _settingFile); _fileStore.EnsureFolderExists(_settingFolder); if (!_fileStore.Exists(_settingFile)) { return; } if (!_fileStore.TryReadBinaryFile(_settingFile, LoadFrom)) { _resourceLoader.GetResourceStream(_settingFile, inputStream => LoadFrom(inputStream)); } }
private void Write(string message) { try { var messageWithUserName = message + GetMessageBase(); lock (_threadLock) { if (_isWriting) { _waitingQueue.Add(messageWithUserName); return; } _isWriting = true; _waitingQueue.Add(messageWithUserName); byte[] fileContentBytes = new byte[0]; if (_fileStoreService.Exists(GetLogFileName())) { _fileStoreService.TryReadBinaryFile(GetLogFileName(), out fileContentBytes); } if (_fileStoreService.Exists(GetLogFileName()) && fileContentBytes.Length + messageWithUserName.Length > LogFileMaximumSize) { #if DEBUG Debug.WriteLine("********************** Log is too long, removing older entries."); #endif DeleteOldEntries(GetLogFileName(), (int)(fileContentBytes.Length + messageWithUserName.Length - LogFileMaximumSize)); } var stream = _fileStoreService.OpenWrite(GetLogFileName()); var streamWriter = new StreamWriter(stream); while (_waitingQueue.Any()) { var additionalLine = _waitingQueue.FirstOrDefault(); _waitingQueue.RemoveAt(0); Debug.WriteLine(additionalLine); streamWriter.WriteLine(additionalLine); } streamWriter.Flush(); // Forcing dispose of file handle to attempt to reduce the possibility of "Too many files opened". streamWriter.Dispose(); } } catch (Exception ex) { LogError(ex); } finally { GC.Collect(); _isWriting = false; } }
public byte[] Load(string name) { byte[] bytes; return(_store.TryReadBinaryFile(name, out bytes) ? bytes : null); }