Создание Системного события для Недавно Созданных Файлов на 10 ГБ в определенном каталоге

Эта статья автора SciFi Neal Stephenson является не плохо введением.

Статья Википедии о Подводных кабелях имеет хороший обзор также.

Детали кабелей отличаются, но изображение Википедии является представительным: набор волокон в середине, большом количестве слоев, перенесенных, чтобы защитить их и обеспечить питание.

Волокна являются однорежимными (я думаю - я нуждаюсь к тройной проверке в этом и вырежу этот комментарий, когда я делаю. Они должны быть однорежимными для более длительного диапазона передачи), и у каждого будет несколько каналов/сигналов мультиплексированными на нем с помощью DWDM (Высокоплотное мультиплексирование с разделением по длинам волн.) Cisco имеет подробную книгу по DWDM, доступному онлайн.

Повторители обычно больше не используются, вместо этого сигналы усилены оптически с помощью EDFAs (Легируемые Эрбием Оптические усилители.) Питание для лазеров, используемых в EDFAs, несут провода в одном из слоев кабеля.

Можно найти больше информации рассеянным по ссылкам Википедии, например, волоконно-оптической связи, и некоторые изготовители кабеля имеют некоторую информацию в наличии, например, Гранулирование имеет некоторые основы волоконной оптики здесь.

3
задан 13 December 2013 в 07:55
1 ответ

Вы не упомянули, какие у вас есть «инструменты», поэтому я дам вам ответ, используя инструменты , которые у меня есть.

Как я бы это сделал. это реализация простой программы на C #, работающей в фоновом режиме, возможно, даже службы. Он будет реализовывать класс FileSystemWatcher и подписываться на событие Created , если я правильно прочитал ваш вопрос, что вы хотите отслеживать. Как только событие будет вызвано / запущено, запишите запись в журнал событий.

Вы упомянули об установке квот ? Возможно, вам придется расширить это, и я обновлю свой ответ позже, потому что это немного сбивает с толку, вы говорите, что хотите запретить людям создавать файлы размером 10 ГБ в определенной папке? В моем следующем разделе предполагается, что это так.

После (или до) записи записи в журнал событий, вы можете просто стереть записанный файл, включив таким образом «квоту». Квоты не позволяют записывать файлы сверх квоты, поэтому не будет проблем, если файл был записан, а затем немедленно удален. Конечно, код стоит тысячи слов, поэтому

using System;
using System.IO;
using System.Diagnostics;
using System.Security.Permissions;

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    public static void Run()
    {

        string path = "C:\\MyDocs";

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = path;

        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;

        // Add event handlers.
        watcher.Created += new FileSystemEventHandler(OnChanged);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        while(true);
        // Do nothing but wait for files created.
    }

    // Define the event handlers. 
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is created

        //Test for file size
        FileInfo flNewFile = new FileInfo(e.FullPath);

        if(flNewFile.length > 10737418239)  //Google says 10GB = 10737418240, so I subtracted one byte and used that as a test.
        {
            //Write to event log.
            EventLog elApplication = new EventLog("Application");
            myLog.Source = "MyAppName";

            myLog.WriteEntry("File size too big for this folder. File " + e.FullPath + " will be deleted.", EventLogEntryType.Warning);

            flNewFile.Delete();
        }   

    }

}

Ссылки:

http://msdn.microsoft.com/en-us/library/system.io.filesystemeventargs.fullpath (v = vs.110). aspx http://msdn.microsoft.com/en-us/library/system.io.fileinfo.delete (v = vs.110) .aspx http://msdn.microsoft.com/en -us / library / fc682h09 (v = vs.110) .aspx

2
ответ дан 3 December 2019 в 07:03

Теги

Похожие вопросы