Чтобы повернуть файл
Отслеживайте, когда был открыт текущий файл, если он больше заданного TimeSpam
(«10-20 минут»), затем закройте его, создайте имя файла файлаи откройте его.
Чтобы другие могли прочитать файл
Это все касается управления параметрами общего доступа к файлам, тогда как другие методы будут использовать правильные значения по умолчанию, если мне нужно что-то конкретное, я бы предпочелбыть явнымFileShare.Read
имеет правильную семантику:
Позволяет открывать файл для последующего открытия.
Решение
class FileLogger {
private TimeSpan timeout;
private DateTime openedFile;
private Stream output;
private StreamWriter writer;
public Dispose() {
if (writer != null) {
writer.Dispose();
writer = null;
};
if (output != null) {
output.Dispose();
output = null;
}
}
public void Log(string message) {
if (output == null
|| ((DateTime.UtcNow - openedFile) > timeout) {
Dispose();
string filename = MakeFileName();
output = new FileStream(filename, FileMode.Append, FileAccess.Write, FileShare.Read);
writer = new StreamWriter(output);
openedFile = DateTime.UtcNow;
}
writer.WriteLine(writer);
}
}
Но с помощью MakeFileName
и конструктором для установки timeout
.