3669

Файли і сериалізація об'єктів

Лекция

Информатика, кибернетика и программирование

NET Framework часто виникають дві в загальному випадку схожі завдання: зберегти (прочитати) вміст даних (файлу) і зберегти (прочитати) поточне полягання об'єкту у файлі або в таблиці бази даних. Не дивлячись на безперечну схожість вказаних завдань, в рамках...

Украинкский

2012-11-05

160 KB

3 чел.

Файли і сериалізація об'єктів

У застосуваннях .NET Framework часто виникають дві в загальному випадку схожі завдання: зберегти (прочитати) вміст даних (файлу) і зберегти (прочитати) поточне полягання об'єкту у файлі або в таблиці бази даних. Не дивлячись на безперечну схожість вказаних завдань, в рамках .NET Framework для вирішення кожною з них передбачені свої класи. Класи обробки файлів зосереджені в просторі імен System.IO. Процес збереження поточного стану об'єкту в пам'яті або на носієві інформації називається сериалізацією об'єкту, а зворотний процес — десериалізацією. Ці процеси управляються класами, що знаходяться в просторі імен System.Runtime.Serialization.

Класи для роботи з файловою системою

Робота з файловою системою має на увазі обробку як папок (каталогів), так і зареєстрованих в них файлів. Відповідні класи визначені в просторі імен System. IO.

У табл. 19.1 перераховані класи, що використовуються для роботи з файловою системою.

Таблиця 19.1. Класи для роботи з файловою системою

Клас

Призначення

Directory

Містить статичні методи для створення і використання папок. Ці методи можна викликати без створення відповідних об'єктів

Directorylnf

Містить властивості і методи для створення і використання тек. Доступ до членів класу можливий тільки після створення його екземпляра

File

Містить статичні методи для роботи з файлами. Ці методи можна викликати без створення об'єкту

File info

Містить методи для роботи з класами, які стають доступними після створення об'єкту цього класу

Path

Допоміжний клас для роботи з маршрутами доступу (шляхами)

Статичні класи Directory і File не вимагають створення відповідних об'єктів. Проте при зверненні до їх методів запускається система перевірки безпеки доступу до коду (Code Access System, CAS), що уповільнює роботу цих методів. У зв'язку з цим при обробці декількох папок (файлів) зручніше використовувати класи Directorylnfo і Filelnfо.

У 32-розрядних версіях Windows, як відомо, для передачі даних між різними пристроями (оперативною пам'яттю, дисковою пам'яттю, мережею) використовується концепція потоків даних (stream). Класи для роботи з потоками даних також визначені в просторі імен System.IO і представлені в табл. 19.2.

Таблиця 19.2. Класи для роботи з потоками даних

Клас

Призначення

MemoryStream

Сховище даних в оперативній пам'яті

Networkstream

Дозволяє передавати потік по мережевому з'єднанню

FileStream

Є базовим класом потоку для запису і читання файлів

BinaryReader

Прочитує дані з двійкових файлів

BinaryWriter

Записує дані в двійковий файл

StreamReader

Прочитує дані з текстових файлів

StreamWriter

Записує дані в текстовий файл

Створення і знищення папок

Створення і знищення теки (папки) найпростіше здійснювати методами CreateDirectory () і Delete () класу Directory. Наприклад:

using System.IO;

class Program 

{

static void Main(string[] args)

{

string DirPath = @"c:\C#_proba";    

if (Directory.Exists(DirPath))      

Directory.Delete(DirPath);         

Else  Directory.CreateDirectory(DirPath) ;

}

}

Рядок DirPath може містити вкладені теки. Якщо вони не існують, то при виконанні методу CreateDirectory вони будуть створені.

Метод Delete () видаляє порожню теку. Якщо потрібно знищити також порожні вкладені теки, йому передається параметр true.

Використовувати методи класу Directorylnf для тих же цілей менш зручно:

using System.IO;

class Program 

{

static void Main()

{

DirectoryInfo Dir = new DirectoryInfo(@"c:\C#_proba");

   if (!Dir.Exists()) Dir.Create ();

   else Dir.Delete(true);

}

}

При зверненні до конструктора DirectoryInfo () йому передається маршрут доступу до створюваної теки, але сама тека не створюється. Лише після перевірки факту відсутності теки вона створюється методом Create ().

Перевірка існування теки необхідна, оскільки спроба створити наново існуючу теку або знищити неіснуючу викличе виключення.

При зверненні до методу Delete йому передається логічний параметр, вказуючий на необхідність знищення вкладених тек.

Переміщення і копіювання тек

Для переміщення теки використовується метод Move () класу Directory або метод MoveTo () класу DirectoryInfo. Як параметри першому передаються імена обох тек, а другому — тільки ім'я теки призначення:

Directory.Move("FromMove", "ToMove");

DirectoryInfo Dir = new DirectoryInfo("FromMove");

Dir.Create();

Dir.MoveTo("ToMove");

Фактично, методи Move () і MoveTo () не переміщають теку, а лише перейменовують її, причому обидві теки повинні знаходитися в одному і тому ж розділі одного і того ж диска. Після виконання методу початкова тека зникає, якщо її ім'я відрізняється від імені теки призначення. Методи Move() і MoveTo() зазвичай використовують для додавання вкладених тек в що вже існують. В цьому випадку ім'я теки призначення повторює ім'я початкової теки і розширює її іменами вкладених тек:

Directory.Move("FromMove" @"FromMove\SubFolderl\SubFolder2");

На практиці значно частіше виникає проблема фізичної зміни положення теки, наприклад перенесення її на інший дисковий носій. Для цього необхідно скопіювати вміст початкової теки в теку призначення. Я детально не розглядатиму це загалом нетривіальне завдання. Скажу лише, що вона вирішується рекурсивним викликом деякої процедури, якою передаються імена обох тек. У процедурі є видимим вміст початкової теки, і її файли копіюються в теку призначення. Якщо серед файлів зустрічається вкладена тека, процедура викликає сама себе (це і називається рекурсивним викликом), але вже з іншими іменами теки.

При копіюванні потрібно передбачити можливість відсутності теки призначення, існування в ній копійованого файлу і ін. Оскільки все це виходить за рамки обговорюваної теми, в наступному прикладі можливість такого роду супутніх проблем ігнорується.

Показана в лістингу 18.1 програма  копіює файли з тієї, що однієї поставляється з Visual Studio тек в іншу. У вибраній для копіювання теці відсутні вкладені теки, що виключає необхідність рекурсії. Копійовані файли замінюють однойменні файли, що існують в теці призначення.

Лістинг 19.1. Копіювання теки

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

namespace CopyDir

{

   class Program

   {

       static void Main(string[] args)

       {

string FromDir = @"d:\Program Files\Microsoft Visual Studio 8\ReportViewer";  // Звідки копіюємо

string ToDir = @"d:\ReportViewer\";   // Куди копіюємо

if (!Directory.Exists(ToDir))         // Тека ToDir існує?

Directory.CreateDirectory(ToDir);  // -Нет. Створюємо її

string[] Files;    // Приймач імен файлів - динамічний масив

// Отримуємо всі елементи копійованої теки:

Files = Directory.GetFileSystemEntries(FromDir); // Цикл копіювання:

           for (int k = 0; k < Files.Length; k++)

           {

    // Отримуємо ім'я чергового файлу:

string FromFile = Path.GetFileName(Files[k]);

     // Отримуємо його атрибути:

               FileAttributes FileAttr = File.GetAttributes(Files[k]);

               if ((FileAttr & FileAttributes.Directory) == FileAttributes.Directory)      //Это тека?

                   continue;                                                             // -Да. Пропускаємо її

               Console.WriteLine(FromFile);

               string ToFile = ToDir + FromFile;

               File.Copy(Files[k], ToFile, true);// Копіюємо файл }

               Console.ReadLine();

           }

       }

   }

}

Нагадаю, що практично у всіх сучасних операційних системах (і в Windows зокрема) у файловій системі використовуються так звані таблиці розміщення файлів (File Allocation Tables, FAT). У цих таблицях указуються файли кореневого каталога і вкладені теки верхнього рівня. У FAT кожної вкладеної теки, у свою чергу, указуються файли і вкладені теки. У кожному рядку FAT крім імені файлу (теки) указуються також додаткові відомості: початковий кластер розташування файлу (теки), дата створення і зокрема так звані файлові атрибути, які задаються перерахуванням System. 10. FileAttributes. Значення цього перерахування вказані в табл. 19.3.

Таблиця 19.3. Значення перерахування FileAttributes 

Значення

Опис

Archived

Звичайний файл, доступний для копіювання і видалення

Compressed

Стислий файл

Device

Зарезервовано для майбутнього використання

Directory

Вкладена тека

Encrypted

Файл зашифрований (якщо мова йде про файлі) або всі включені у теку файли зашифровані (якщо мова йде про теці)

Hidden

Прихований файл

Normal

Звичайний файл, для якого не можуть бути встановлені никакие інші атрибути

NotContentlndexed

Файл не може бути індексований службою індексації контексту операційної системи

Offline

Файл не підключений, і його дані в даний час недоступні I

Readonly

Файл, призначений тільки для читання

ReparsePoint

Файл містить крапку репера, тобто блок даних, ассоциированных з іншими файлом або текою

SparseFile

«Рихлий» файл, велика частина якого містить нулі

System

Системний файл, який може використовувати тільки операци-   I онная система

Temporary

Тимчасовий файл I

Елементи перерахувань в С# можуть зв'язуватися з будь-якими цілочисельними константами. Перерахування FileAttributes зв'язується з послідовністю констант 1, 2, 4, 8 і т. д., тобто файловим атрибутом може бути комбінація перерахованих значень. Використовувана в прикладі перевірка блокує обробку будь якої теки:

if ((FileAttr & FileAttributes.Directory) == FileAttributes.Directory) continue;

У вибраній для копіювання теці немає вкладених тек, тому вказана перевірка не потрібна. Але на практиці для копіювання не тільки файлів, але і всіх вкладених тек замість оператора continue слід вставити код, що реалізовує рекурсивний виклик процедури обходу дерева каталогів (тек).

Дослідження інформації про рядок в таблиці FAT

Інформація про одиничний рядок FAT зберігається у властивостях класу FileSystemInfо. В табл. 19.4 перераховані ці властивості.

Таблиця 19.4. Властивості класу FileSystemlnfo 

Властивість

Опис

Attributes

Атрибути

CreationTime

Час створення файлу (теки)

GreationTimeUTC

Час створення у форматі UTC (Universal Time Coordinated

усесвітній скоординований час). Час у форматі UTC відповідає часу по грінвічському меридіану і координується з показаннями атомних годинників

Exists

Ознака існування

Extension

Розширення файлу

FullName

Повне ім'я (з маршрутом доступу)

LastAccess Time

Час останнього звернення до файлу (теці)

LastAccessTimeUTC

Час останнього звернення у форматі UTC

LastWriteTime

Час останньої зміни

LastWriteTimeUTC

Час останньої зміни у форматі UTC

Name

Ім'я файлу (теки)

Класи DirectoryInfo і FileInfo є спадкоємцями базового класу FileSystemInfo і набувають всіх його властивостей.

Лістинг 19.2 ілюструє використання класу DirectoryInfo.

Лістинг 19.2. Використання класу DirectoryInfo

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

namespace DirInfo

{

class Program 

{

static void Main(string[] args)

{

DirectoryInfo DirInfo = new DirectoryInfo(@"c:\Program Files");

   Console.WriteLine("{0,30}1}", "Повне ім'я:",DirInfo.FullName);

   Console . WriteLine (" { 0, 30 } {1} ", "Ім'я : ", DirInfo.Name) ;

   Console.WriteLine("{0,30}1}", "Час створення:",DirInfo.CreationTime);

   Console.WriteLine("{0,30}1}", "Час створення UTC:",DirInfo.CreationTimeUtc);

   Console.WriteLine("{0,30}1}", "Ознака існування:",DirInfo.Exists);

Console.WriteLine("{0,30} {1} ", "Розширення:", DirInfo.Extension);

Console.WriteLine("{0,30}1}", "Час останнього доступу:",DirInfo.LastAccessTime);

Console.WriteLine ("{0,30}1}", "Час останнього оновлення:",DirInfo.LastWriteTime);

   Console.WriteLine("{0,30}1}", "Атрибути:", DirInfo.Attributes);

   Console.ReadLine();

}

}

}

Запис і читання файлів

Техніка роботи з файлами залежить від типу файлу (текстовий або двійковий).

Обробка текстових файлів

При роботі з текстовими файлами спочатку створюється потік класу FileSteram. Дані записуються у файл за допомогою допоміжного об'єкту класу

StraamWriter, а читаються об'єктом класу StreamReader, В лістингу 19.3 показаний приклад роботи з текстовим файлом .

Лістинг 19.3. Робота з текстовим файлом

using System;

using  System.Collections.Generic;

using System.Text;

using System.IO;

namespace StringFileDemo

{

class Program

{

static void Main(string[] ergs)

{

// Запис i текстовий файл:

FileStream Stream = new FileStream("strings.dat",FileMode.Create, FileAccess.Write);

   StreamWriter Writer = new StreamWriter(Stream);

   Writer.WriteLine("Мело, мело по всій Землі");

   Writer.WriteLine("У всі межі.");

   Writer.WriteLine("Свічка горіла на столі.");

   Writer.WriteLine("Свічка горіла...");

   Writer.Close();

   Stream.Close();

   // Читання з файлу:

   Stream = new FileStream("strings.dat",FileMode.Open, FileAccess.Read);

   StreamReader Reader = new StreamReader(Stream);

   string S; do 

   {

   S = Reader.ReadLine();

       if (S != null)

       Console.WriteLine(S);

   }

   while (S != null);

   Reader.Close();

   Stream.Close();

   Console.ReadLine();

}

}

}

При створенні об'єкту FileStream йому передаються ім'я файлу і два параметри: FileMode, що визначає спосіб створення потоку, і FileAccess, регулюючий доступ потоку до даним.

У табл. 19.5 і 19.6 указуються допустимі значення цих параметрів.

Для потоку існує поняття поточного запису — в цей запис поміщаються дані і з неї вони прочитуються.

Положенням поточного запису можна управляти за допомогою методу Seek (), що має таку сигнатуру:

public virtual long Seek(int Offset, SeekOrigin Origin);

Тут Offset — зсув щодо позиції, вказаної параметром Origin. Перерахування SeekOrigin може мати значення, вказане в табл. 18.7.

Таблиця 19.5. Значення параметра FileMode

Значення

Опис

Append

Додає записи в існуючий файл або створює новий. Вимагає, щоб параметр FileMode мав значення Write

Create

Створює новий файл або переписує той, що існує. Вимагає щоб параметр FileMode мав значення Write

CreateNew 

Створює новий файл, а якщо він вже існує, виникає виключення. Вимагає, щоб параметр FileMode мав значення Write 

Open

Відкриває існуючий файл. Якщо файлу немає, виникає виключення

OpenOrCreate

Відкриває той, що існує або створює новий файл, якщо він ще не створений

Truncate

Відкриває існуючий файл і робить його розмір рівним нулю

Таблиця 19.6. Значення параметра FileAccess

Значення

Опис

Read

Потік може читати дані

ReadWrite

Потік може читати і записувати дані

Write

Потік може записувати дані

Таблиця 19.7. Значення перерахування SeekOrigin

Значення

Опис

Begin

Відповідає початку потоку

Current

Відповідає поточному запису потоку

End

Відповідає кінцю потоку

Таким чином, вказаний далі виклик зробить поточним запис з індексом 10 від початку потоку (індексація починається з 0):

Stream.Seek(10, SeekOrigin.Begin);

Фізичний запис даних у файл реалізується у момент закриття потоку методом Close () або виштовхування записів з проміжного буфера методом Flush (). У другому випадку потік не закривається і готовий до продовження операцій.

При читанні рядків з текстового файлу потрібно контролювати кінець файлу. Для цього змінна типу string в С# може приймати значення null, якщо з файлe нічого не прочитано, тобто якщо файл вичерпаний (див. показаний раніше приклад). Іншим способом контролю є звернення до методу StreamReader.Peek(), який повертає позитивне число, якщо файл не вичерпаний, або -1 інакше. Таким чином, цикл читання записів з текстового файлу  спрощується:

while   (Reader.Peek()   >  0) Console.WriteLine(Reader.ReadLine());

Обробка двійкових файлів

Обробка двійкових файлів багато в чому подібна до обробки текстових: спочатку створюється потік, потім — об'єкти BinaryWriter або BinaryReader залежно від напряму передачі даних (у файл або з файлу).

За допомогою методу Write () об'єкту BinaryWrite дані передаються у файл. Метод Write () має безліч переобтяжених варіантів, що дозволяють записувати у файл будь-які дані (зокрема рядки string, так що ділення файлів на рядкових і двійкових носить чисто умовний характер).

Об'єкт BinaryReader має метод Read(), призначений для читання з потоку масиву символів або байтів. Крім того, він має численні методи Read  (ReadBoolean (), ReadByte(), ReadDouble (), ReadString () і т. д.) для читання значень примітивних типів. Його метод PeekChar () дозволяє контролювати кінець файлу: подібно до розглянутого раніше методу Stream-Reader . Peek (), він повертає -1, якщо файл вичерпаний.

Серіалізация

Як вже мовилося на початку цього розділу .NET Framework підтримує цікаву технологію збереження поточного стану об'єкту на деякому носієві інформації. Ця технологія називається сериалізацією об'єкту. Серіалізований об'єкт може бути переданий по мережі на інший комп'ютер і там відновлений в первинному стані — цей процес називається десериалізацією.

Техніка сериализации

Особливістю сериализации є те, що її можна застосовувати тільки до класів, що підтримують цю процедуру. Для цього клас повинен оголошуватися з атрибутом [Serializable] або в його оголошенні повинна бути явна вказівка на те, що він виконує інтерфейс ISerializable. Наприклад:

[Serializable]

Book = class(System.Object)

{

string Title;

string Author;

string Publish;

int Year; }

Лише відносно невелику кількість (менше 40) стандартних CTS-классов реалізують інтерфейс ISsriallzabls. Це, в основному, класи, використовувані як сховища дані (DataSet, DataTabls, TreeNods і деякі інші). У інтерфейсі ISarializabla визначений єдиний метод QetObactDaia такого вигляду:

void GitObjtetData(Strialiiatlonlnfo Info,   StrtamingGontext Centext);

Параметр Info містить дані, a Context — поточний стан потоку даних, На практиці спеціальні класи, що реалізовують інтерфейс ISsrializable, створюються для обслуговування нестандартних типів даних. В більшості випадків цього можна не робити — достатньо лише вставити атрибут [Serializable] перед оголошенням класу, як це зроблено в попередньому прикладі.

При сериалізації середовище CLR створює граф об'єкту і за допомогою цього графа зберігає об'єкт разом з пов'язаними з ним об'єктами. Кожен об'єкт, пов'язаний з основним об'єктом, отримує унікальний ідентифікатор. При десериалізації може зустрітися випадок, коли об'єкт посилається на ідентифікатор ще не відновленого об'єкту. В цьому випадку CLR коректує порядок відновлення об'єктів.

Оголосивши тим або іншим способом, що клас підтримує сериалізацію, ми повинні вибрати формат представлення його об'єкту. Технологія .NET Framework пропонує для цієї мети два формати: двійковий і SOAP (Simple Object Access Protocol — простій протокол доступу до об'єкту). У першому випадку створюється об'єкт класу BinaryFormatter, що належить простору імен System. Runtime. Serialization. Formatters. Binary, в другому — об'єкт класу SoapFormatter, що належить простору імен System.Runtime.Serialization .Formatters.Soap.

Приклад

Описану технологію ілюструє проста програма з лістингу 19.4

Лістинг 19.4. Ілюстрація сериалізація/десериалізація

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;

namespace SerialDemo

{

   [Serializable]

   class Book

       /* Обєкти класу Book містять інформацію про книгу.

       Ці об'єкти піддаватимуться сериализации/десериализации. */

   {

       public string Title;     // Назва книги

       public string Author;    // Автор

       public string Publish;  // Видавництво

       public int Ytar;       // Рік випуску

       // Конеяруквор класу!

       public Book(string tit, string aut, string pub, int ytar)

       {

           Title = tit;

           Author = aut;

           Publish = pub;

           Ytar = ytar;

       }

   }

   class Program

   {

       static void Main(string[] arge)

       {

           // Масив для тарах книг:

           Book[] Books = new Book[3];

           // Наповнюємо його:

Books[0] - new Book("C# і платформа .NET", "Троєлсен", "Пітер", 2005);

Books[1] - new Book("ASP.NET. Мистецтво содания веб-сайтів", "Уолтер", "Диа-софт", 2002);

Books[2] - new Book("Грибний цар", "Поляків", "РОСМЕН", 2005);

           // Створюємо потік для сериализации:

FileStream Stream = new FileStream("books.dat", FileMode.Create, FileAccess.Write);

           // Використовуваний двійковий формат:

           BinaryFormatter fmt = new BinaryFormatter();

           fmt.Serialize(Stream, Books);            // Серіалізуєм об'єкти

           Stream.Close();                      // Закриваємо потік

           // Створюємо потік для десериализации:

           Stream = new FileStream("books.dat", FileMode.Open, FileAccess.Read);

           // Створюємо ще одне сховище книг:

           Book[] Bks = new Book[3];

           Bks = (Book[])fmt.Deserialize(Stream);  // Десеріалізуєм

           // Виводимо результат:

           for (int k = 0; k < 3; k++)

           {

               Console.WriteLine("{0,40}, {1, 8}, {2, 8}, {3}", Bks[k].Title, Bks[k].Author, Bks[k].Publish, Bks[k].Year);

           }

           Console.ReadLine();

       }

   }

}

При десериализации виконується явне приведення отримуваного масиву об'єктів до типу Воок[]:

Bks  =   (Воок[])fmt.Deserialize(Stream);

Якщо цього не зробити, компілятор повідомить про несумісність типів Book [ ] і Object: метод Deserialize () завжди повертає дані як об'єкти класу Object.

Якщо якісь члени класу не повинні брати участь в сериаліації/десериалізації, вони позначаються атрибутом [NonSerialized]:

[NonSerialized] public int Year;

Приклад алгоритму запису масиву надано в лістингу 19.5.

Лістинг 19.5. Запис одновимірного масиву на диск.

Добавити клас

using System.IO  

Console.WriteLine("Введіть число ");

int n = Int32.Parse(Console.ReadLine());

StreamWriter wr = new StreamWriter("1.txt");

wr.WriteLine(Int32.Parse(Convert.ToString(n)));

int[] a = new int[n + 2];

Random r = new Random();

 for (int i = 1; i <= n; i++)

           {

a[i] = r.Next(100);

       wr.WriteLine(Int32.Parse(Convert.ToString(a[i])));

               Console.Write(a[i] + " ");

           }

Console.WriteLine();

   wr.Close();

      int[] b = new int[n + 2];

         StreamReader re = new StreamReader("1.txt");

              String word="";

                 word=re.ReadLine();

                  String time="";

 for (int i = 1; i <= Convert.ToUInt32(word); i++)

           {

 time= re.ReadLine();

     b[i] = Convert.ToInt32(time);

       Console.Write("a["+ Convert.ToString(i)+ "]= "+ b[i]+" ");

           }

 Console.ReadLine(); 


 

А также другие работы, которые могут Вас заинтересовать

41496. ТЕХНОЛОГИЯ РАБОТЫ СОРТИРОВОЧНЫХ СТАНЦИЙ. ХАРАКТЕРИСТИКА СОРТИРОВОЧНЫХ СТАНЦИЙ 123.5 KB
  Оперативное управление работой станции 1. Назначение размещение и техническая оснащенность Сортировочные станции предназначаются для массовой переработки вагонов расформирования и формирования поездов причем в первую очередь сквозных т. Кроме того сортировочные станции могут пропускать транзитные поезда с которыми выполняются следующие операции: смена локомотивных бригад; смена локомотивов; технический и коммерческий осмотр составов; ремонт и экипировка локомотивов вагонов; снабжение водой поездов с живностью экипировка...
41497. ТЕХНОЛОГИЯ РАБОТЫ УЧАСТКОВОЙ СТАНЦИИ 248.5 KB
  Основная работа участковых станций заключается в обработке транзитных поездов кроме того на этих станциях выполняются еще следующие основные операции: смена локомотивов и локомотивных бригад; расформированиеформирование составов участковых и сборных поездов иногда сквозных; маневры по отцепке и прицепке групп вагонов к транзитным поездам с частичной переработкой грузовые и пассажирские операции. Число сортировочных путей определяется числом назначений сортировки суточным количеством перерабатываемых вагонов технологическим процессом...
41498. ОПЕРАТИВНОЕ ПЛАНИРОВАНИЕ, УПРАВЛЕНИЕ И РУКОВОДСТВО РАБОТОЙ СТАНЦИИ 232 KB
  Оперативное планирование работы станции. Автоматизация текущего планирования работы станции АСТП. Оперативное руководство работой станции 1. План работы смены вступающий на дежурного во второй половине суток, оставляют с учетом итогов работы первой смены и обеспечения выполнения всего суточного плана.
41499. ОРГАНИЗАЦИЯ РАБОТЫ СТАНЦИЙ. ОБЩИЕ СВЕДЕНИЯ ОБ УСТРОЙСТВЕ И РАБОТЕ СТАНЦИЙ 162.5 KB
  К раздельным пунктам относятся: станции разъезды обгонные пункты путевые посты а при автоблокировке и проходные светофоры. Коммерческие операции: прием взвешивание хранение и выдача грузов; оформление перевозочных документов взимание провозных платежей; пломбирование вагонов; обеспечение сохранности грузов находящихся на станции; осмотр прибывающих и отправляющих составов в коммерческом отношении. В зависимости от основного назначения и характера работы станции делятся на промежуточные участковые сортировочные грузовые и...
41500. ОСНОВЫ УПРАВЛЕНИЯ ЭКСПЛУАТАЦИОННОЙ РАБОТОЙ ЖЕЛЕЗНЫХ ДОРОГ 123 KB
  Основные принципы организации движения. Железнодорожный транспорт занимает ведущее место среди всех видов транспорта автомобильный воздушный речной морской трубопроводный это определяется следующими положениями: 1 железнодорожный транспорт работает непрерывно в течении года и суток осуществляя массовую перевозку народнохозяйственных грузов пассажиров; 2железнодорожный транспорт участвует в различных фазах производственного процесса: в начальной если перевозят сырьё исходные материалы; в средней если перевозят комплектующее...
41502. РАБОТА СТАНЦИИ В ЗИМНИХ УСЛОВИЯХ 49.5 KB
  Ремонт оборудования сортировочных горок устройств СЦБ и связи и наружного освещения на горках капитальный ремонт замедлителей воздухопроводной сети компрессорного оборудования в устройствах СЦБ – ремонт стрелочных переводов гарнитуры; в устройствах связи – громкоговорящей связи в первую очередь пополнение количества динамиков; выправка профилей сортировочных горок вытяжек и сортировочных путей; эти работы являются очень ответственными трудоемкими и поэтому на практике не редко не производятся это приводит к замедлению темпа...
41503. ОСНОВНЫЕ ПОКАЗАТЕЛИ, УЧЕТ И АНАЛИЗ РАБОТ СТАНЦИИ 236.5 KB
  Основные показатели работы станции. Учет работы станции формы учета и отчетности. Анализ работы станции.
41504. Провозная и пропускная способность железных дорог 37.5 KB
  Провозная способность прямо пропорциональна пропускной способности участка и массе составов поездов а также существенно зависит от конструктивных схем и параметров вагонов. Провозная способность увеличивается с понижением коэффициента тары вагонов улучшением использования их грузоподъемности. Расчеты ВНИИЖТа показывают что массовое применение восьмиосных полувагонов и цистерн габаритов Тпр и Тц позволяет увеличить провозную способность железных дорог на 18 .