Перейти к публикации
  • Сейчас на странице   Всего пользователей: 1   (0 пользователей, 1 гость)

justice_st

Постоянная перезапись мелких файлов

Рекомендованные сообщения

Есть короч прога, она делает раз в минуту сохранение двух файлов по 20 кб, + бэкап этих файлов в другую папку. Причем бэкап я сделал так:

			System.IO.DirectoryInfo backupDirectoryInfo = new System.IO.DirectoryInfo(filePath+@"\backup\");
			if (!backupDirectoryInfo.Exists)
				backupDirectoryInfo.Create();			  
			string dateAdditionToFileName = DateTime.Now.ToString(".yyyy.MM.HH.mm.ss");
			System.IO.File.Copy(filePath + @"\" + fileName, filePath + @"\backup\" + fileName + dateAdditionToFileName + ".backup", true);
			var searchEntry = ex_deleteOldEntries ? "ipb.jqt.":"ipb_expired.jqt.";
			//getting list of files by filename mask, ordered by creation date desc order
			var backupFiles = new System.IO.DirectoryInfo(filePath + @"\backup\").GetFiles()
				.Where(x=>x.Name.Contains(searchEntry))
				.OrderBy(f => f.LastWriteTime).Reverse()
				.ToList();
			//keeping just last 3 files
			int fileLimit = 3, currentFiles= 0;			  
			foreach (System.IO.FileInfo backuppedFile in backupFiles)			  
				if (currentFiles < fileLimit)
					currentFiles++;
				else backuppedFile.Delete();  

(Берем список файлов в директории по двум маскам, упорядочиваем их по дате в порядке убывания (самые новые - первые). Сохраняем только первые 3 файла.

То есть раз в минуту перезаписываются 2 файла, два новых копируются и два удаляются.

Сабж: такие постоянные перезаписи мелких файлов хуевы для жесткого диска? :hmm: Может мне убрать автосэйв и приаттачить его на эвент изменения файла?

Поделиться сообщением


Ссылка на сообщение

фрагментация разве что усиливается, а так обычному винту не должно становиться плохо

 

Если твое приложение не планирует часто падать, то можешь писать бэкапы в MemoryStream, а потом периодически сливать его на винт, когда подрастет.

 

ну и бля,

using System.IO;

 

 

плюс соединения строк для пути делай через Path.Combine(). Он соединяет правильно, даже если ты проебал где-то слеш, или наоборот лишний добавил


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...