Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
Результаты опроса: Помещать эту статью в faq раздела с# или нет
Да 7 100.00%
Нет 0 0%
Голосовавшие: 7. Вы ещё не голосовали в этом опросе

 
Рейтинг: Рейтинг темы: голосов - 538, средняя оценка - 4.68
Rockedit
Автор FAQ
Автор FAQ
1760 / 566 / 9
Регистрация: 22.12.2009
Сообщений: 1,544
#1

Пространство имен - System.IO (Работа с файлами, директориями, дисками, памятью) - C#

05.09.2010, 11:24. Просмотров 75307. Ответов 0
Метки faq (Все метки)

(Данная информация взята из msdn, более подробную информацию о пространстве имен System.IO Вы найдете на http://msdn.microsoft.com/ru-ru/library/system.io.aspx )
FAQ для раздела – “C# для начинающих”
Пространство имен - System.IO (Работа с файлами, директориями,дисками,памятью)


Содержание:


1. Диаграмма классов пространства имен System.IO
2. Классы
3. Структуры
4. Делегаты
5. Перечисления



1. Диаграмма класов пространства имен System.IO
Пространство имен - System.IO (Работа с файлами, директориями, дисками, памятью)


Пространство имен System.IO содержит типы, позволяющие осуществлять чтение и запись в файлы и потоки данных, а также типы для базовой поддержки файлов и папок. Ниже приведено полное описание данного пространства имен, а так же основные примеры работы с ним.


System.IO включает в себя:



2. Классы


BinaryReader Считывает простые типы данных как двоичные значения в заданной кодировке.
BinaryWriter Записывает простые типы данных в поток как двоичные значения и поддерживает запись строк в определенной кодировке.
BufferedStream Обеспечивает дополнительную буферизацию для выполнения операций чтения и записи с другими потоками.Этот класс не может быть унаследован.
Directory Предоставляет статические методы для создания, перемещения и перечисления в каталогах и вложенных каталогах.Этот класс не может быть унаследован.
Пример использования:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*Предоставляет статические методы для создания, перемещения и перечисления в каталогах и вложенных каталогах.Этот класс не может быть унаследован.
Пространство имен:  System.IO
Сборка:  mscorlib (в mscorlib.dll)
[ComVisibleAttribute(true)]
public static class Directory
*/
using System;
using System.IO;
 
class Test
{
    public static void Main()
    {
        /* в строковые переменные заносим пути директорий
        с которыми будем работать*/
        string path = @"c:\MyDir";
        string target = @"c:\TestDir";
 
        try
        {
            //проверяем, существует ли директория "c:\MyDir"
            if (!Directory.Exists(path))
            {
                // если нет, то создаем ее.
                Directory.CreateDirectory(path);
            }
            //проверяем, существует ли директория "c:\TestDir"
            if (Directory.Exists(target))
            {
                // Если да, то удаляем ее
                Directory.Delete(target, true);
            }
 
            
/*
Перемешение директории
public static void Move(
    string sourceDirName,
    string destDirName
)
sourceDirName
Тип: System.String
Путь к файлу или каталогу, который необходимо переместить. 
destDirName
Тип: System.String
Путь к новому местоположению sourceDirName.Если sourceDirName является файлом, то параметр destDirName также должен быть именем файла.
*/
            Directory.Move(path, target);
 
            // Создание файла
            File.CreateText(target + @"\myfile.txt");
 
            // Выводим количество файлов директории “c:\TestDir”
            Console.WriteLine("The number of files in {0} is {1}",
                target, Directory.GetFiles(target).Length);
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally { }
    }
}

Как переименовать папку?(от Dzhej-Dzhej)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.IO;
 
namespace Ex
{
 
    class Program
    {
        static void Main(string[] args)
        {
 
            System.IO.Directory.CreateDirectory (@"D:\1");//создали
            System.IO.Directory.Move(@"D:\1", @"D:\2");//переименовали
        }
 
    }
}
DirectoryInfo Предоставляет методы экземпляра класса для создания, перемещения и перечисления в каталогах и подкаталогах.Этот класс не может быть унаследован.
Пример использования:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
Предоставляет методы экземпляра класса для создания, перемещения и перечисления в каталогах и подкаталогах.Этот класс не может быть унаследован.
 
Пространство имен:  System.IO
Сборка:  mscorlib (в mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class DirectoryInfo : FileSystemInfo
*/
using System;
using System.IO;
 
class Test
{
    public static void Main()
    {
        /*передаем конструктору класса DirectoryInfo
         имя директории для манипуляций*/
        DirectoryInfo di = new DirectoryInfo(@"c:\MyDir");
        try
        {
            // Если директория "c:\MyDir" существует, то
            if (di.Exists)
            {
                Console.WriteLine(@"Директория ‘c:\MyDir’ существует.");
                return;
            }
 
            // Иначе, создаем ее
            di.Create();
            Console.WriteLine("Создание директории прошло успешно.");
 
            // Удаляем созданную директорию
            di.Delete();
            Console.WriteLine("Удаление директории прошло успешно.");
 
        }
        catch (Exception e)
        {
            Console.WriteLine("Ошибка: {0}", e.ToString());
        }
        finally { }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.IO;
 
class CopyDir
{
    public static void Copy(string sourceDirectory, string targetDirectory)
    {
        DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);
        DirectoryInfo diTarget = new DirectoryInfo(targetDirectory);
 
        CopyAll(diSource, diTarget);
    }
 
    public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
    {
        // Если директория target.FullName не существует, создать ее
        if (Directory.Exists(target.FullName) == false)
        {
            Directory.CreateDirectory(target.FullName);
        }
 
        // Копируем файлы из sourceDirectory в targetDirectory
        foreach (FileInfo fi in source.GetFiles())
        {
            Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
            fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
        }
       //копируем поддиректории
        foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
        {
            DirectoryInfo nextTargetSubDir =
                target.CreateSubdirectory(diSourceSubDir.Name);
            CopyAll(diSourceSubDir, nextTargetSubDir);
        }
    }
 
    public static void Main()
    {
        string sourceDirectory = @"c:\sourceDirectory";
        string targetDirectory = @"c:\targetDirectory";
 
        Copy(sourceDirectory, targetDirectory);
    }
}
DirectoryNotFoundException Исключение, возникающее при невозможности найти часть файла или каталога.
DriveInfo Предоставляет доступ к сведениям на диске.
Пример использования:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
Предоставляет доступ к сведениям на диске.
 
Пространство имен:  System.IO
Сборка:  mscorlib (в mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class DriveInfo : ISerializable
*/
using System;
using System.IO;
 
class Test
{
    public static void Main()
    {
        DriveInfo[] allDrives = DriveInfo.GetDrives();
 
        foreach (DriveInfo d in allDrives)
        {
            Console.WriteLine("Drive {0}", d.Name);
            Console.WriteLine("  File type: {0}", d.DriveType);
            if (d.IsReady == true)
            {
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                Console.WriteLine("  File system: {0}", d.DriveFormat);
                Console.WriteLine(
                    "  Available space to current user:{0, 15} bytes",
                    d.AvailableFreeSpace);
 
                Console.WriteLine(
                    "  Total available space:          {0, 15} bytes",
                    d.TotalFreeSpace);
 
                Console.WriteLine(
                    "  Total size of drive:            {0, 15} bytes ",
                    d.TotalSize);
            }
        }
    }
}
/* 
Пример работы приложения:
 
Drive A:\
  File type: Removable
Drive C:\
  File type: Fixed
  Volume label: 
  File system: FAT32
  Available space to current user:     4770430976 bytes
  Total available space:               4770430976 bytes
  Total size of drive:                10731683840 bytes 
Drive D:\
  File type: Fixed
  Volume label: 
  File system: NTFS
  Available space to current user:    15114977280 bytes
  Total available space:              15114977280 bytes
  Total size of drive:                25958948864 bytes 
Drive E:\
  File type: CDRom
*/
DriveNotFoundException Исключение вызывается при попытке доступа к недоступному диску или данным совместного использования.
EndOfStreamException Исключение, которое создается при попытке выполнить чтение за пределами потока.
ErrorEventArgs Предоставление данных для события Error.
File Предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов, а также помогает при создании объектов FileStream.
Пример использования:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*
Предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов, а также помогает при создании объектов FileStream.
 
Пространство имен:  System.IO
Сборка:  mscorlib (в mscorlib.dll)
[ComVisibleAttribute(true)]
public static class File
*/
using System;
using System.IO;
 
class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        if (!File.Exists(path))
        {
            // Создание файла и запись в него
            using (StreamWriter sw = File.CreateText(path))
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }
        }
 
        // Открываем файл для чтения и читаем из него все строки, построчно
        using (StreamReader sr = File.OpenText(path))
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
    }
}
FileFormatException Исключение, которое вызывается, если входной файл или поток данных, который должен соответствовать определенной спецификации формата файла, сформирован неверно.
FileInfo Предоставляет методы экземпляра для создания, копирования, удаления, перемещения и открытия файлов, а также позволяет создавать объекты FileStream.Этот класс не может быть унаследован.
Пример использования:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
Предоставляет методы экземпляра для создания, копирования, удаления, перемещения и открытия файлов, а также позволяет создавать объекты FileStream.Этот класс не может быть унаследован.
 
Пространство имен:  System.IO
Сборка:  mscorlib (в mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class FileInfo : FileSystemInfo
*/
using System;
using System.IO;
 
class Test
{
 
    public static void Main()
    {
        string path = Path.GetTempFileName();
        FileInfo fi1 = new FileInfo(path);
 
        if (!fi1.Exists)
        {
            // Создание файла и запись в него
            using (StreamWriter sw = fi1.CreateText())
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }
        }
 
        // Открываем файл для чтения и читаем из него все строки, построчно
        using (StreamReader sr = fi1.OpenText())
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
 
        try
        {
            string path2 = Path.GetTempFileName();
            FileInfo fi2 = new FileInfo(path2);
 
            //Удаляем файл
            fi2.Delete();
 
            //Копируем файл
            fi1.CopyTo(path2);
            Console.WriteLine("{0} копируем в {1}.", path, path2);
 
            //Удаляем, только что скопированный файл
            fi2.Delete();
            Console.WriteLine("{0} удален успешно.", path2);
 
        }
        catch (Exception e)
        {
            Console.WriteLine("Ошибка: {0}", e.ToString());
        }
    }
}
FileLoadException Это исключение создается в случае, когда управляемая сборка найдена, но не может быть загружена.
FileNotFoundException Это исключение создается, когда попытка доступа к файлу, не существующему на диске, заканчивается неудачей.
FileStream Предоставляет Stream в файле, поддерживая синхронные и асинхронные операции чтения и записи.
FileSystemEventArgs Предоставляет данные для событий каталога: Changed, Created, Deleted.
FileSystemInfo Обеспечивает базовый класс для объектов FileInfo и DirectoryInfo.
FileSystemWatcher Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях каталога или файла в каталоге.
• InternalBufferOverflowException Исключение, создаваемое при переполнении внутреннего буфера.
InvalidDataException Исключение возникает, когда поток данных имеет недопустимый формат.
IODescriptionAttribute Задает для визуальных конструкторов описания возможность отображения при обращении к событию, средству расширения или свойству.
IOException Исключение, создаваемое при возникновении ошибки ввода-вывода.
Path Выполняет операции для экземпляров класса String, содержащих сведения пути к файлу или каталогу.Эти операции выполняются межплатформенным способом.
PathTooLongException Исключение, создаваемое, когда путь или имя файла превышает максимальную длину, определенную системой.
PipeException Создается при ошибке в именованном канале.
RenamedEventArgs Предоставляет данные для события Renamed.
Stream Предоставляет универсальное представление последовательности байтов.
StreamReader Реализует TextReader, который считывает символы из потока байтов в определенной кодировке.
Пример использования:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
Реализует TextReader, который считывает символы из потока байтов в определенной кодировке.
 
Пространство имен:  System.IO
Сборка:  mscorlib (в mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class StreamReader : TextReader
*/
using System;
using System.IO;
 
class Test
{
    public static void Main()
    {
        try
        {
            /* Создание объекта типа StreamReader для чтения файла.
            Конструкция using(…){}, закрывает файл при выходи за
            Операторские скобки {}*/ 
            using (StreamReader sr = new StreamReader("TestFile.txt"))
            {
                string line;
                // читаем файл построчно (один из способов)
               // к примеру можно прочесть файл сразу - полностью
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
        }
        catch (Exception e)
        {
            // В случае ошибки
            Console.WriteLine("Файл не может быть прочитан:");
            Console.WriteLine(e.Message);
        }
    }
}
StreamWriter Реализует TextWriter для записи символов в поток в определенной кодировке.
Пример использования:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
Реализует TextWriter для записи символов в поток в определенной кодировке.
 
Пространство имен:  System.IO
Сборка:  mscorlib (в mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class StreamWriter : TextWriter
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace StreamReadWrite
{
    class Program
    {
        static void Main(string[] args)
        {
            // Получаем список директорий диска “C:\”
            DirectoryInfo[] cDirs = new DirectoryInfo(@"c:\").GetDirectories();
 
            // Записываем полученный список в файл
            using (StreamWriter sw = new StreamWriter("CDriveDirs.txt"))
            {
                foreach (DirectoryInfo dir in cDirs)
                {
                    sw.WriteLine(dir.Name);
 
                }
            }
 
            // Читаем записанные данные
            string line = "";
            using (StreamReader sr = new StreamReader("CDriveDirs.txt"))
            {
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
        }
    }
}
MemoryStream Создает поток, резервным хранилищем которого является память.
Пример использования:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
Создает поток, резервным хранилищем которого является память.
 
Пространство имен:  System.IO
Сборка:  mscorlib (в mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class MemoryStream : Stream
*/
using System;
using System.IO;
using System.Text;
 
class MemStream
{
    static void Main()
    {
        int count;
        byte[] byteArray;
        char[] charArray;
        UnicodeEncoding uniEncoding = new UnicodeEncoding();
 
        // Создание данных для записи в поток.
        byte[] firstString = uniEncoding.GetBytes(
            "Invalid file path characters are: ");
        byte[] secondString = uniEncoding.GetBytes(
            Path.GetInvalidPathChars());
 
        using (MemoryStream memStream = new MemoryStream(100))
        {
            // Запись первой строки в поток.
            memStream.Write(firstString, 0, firstString.Length);
 
            // Запись второй строки в поток побайтно.
            count = 0;
            while (count < secondString.Length)
            {
                memStream.WriteByte(secondString[count++]);
            }
 
            // Вывод параметров потока в консоль.
            Console.WriteLine(
                "Capacity = {0}, Length = {1}, Position = {2}\n",
                memStream.Capacity.ToString(),
                memStream.Length.ToString(),
                memStream.Position.ToString());
 
            // Установка на начальную позицию в потоке.
            memStream.Seek(0, SeekOrigin.Begin);
 
            // Читаем первые 20 байт
            byteArray = new byte[memStream.Length];
            count = memStream.Read(byteArray, 0, 20);
 
            // Читаем оставшиеся данные побайтно до конца.
            while (count < memStream.Length)
            {
                byteArray[count++] =
                    Convert.ToByte(memStream.ReadByte());
            }
 
            // Конвертируем массив байт в массив символов
            // и выводим в консоль
            charArray = new char[uniEncoding.GetCharCount(
                byteArray, 0, count)];
            uniEncoding.GetDecoder().GetChars(
                byteArray, 0, count, charArray, 0);
            Console.WriteLine(charArray);
        }
    }
}
StringReader Реализует класс TextReader, осуществляющий чтение из строки.
Пример использования:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
Реализует класс TextReader, осуществляющий чтение из строки.
 
Пространство имен:  System.IO
Сборка:  mscorlib (в mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class StringReader : TextReader
*/
using System;
using System.IO;
 
class StringRW
{
    static void Main()
    {
//строковая переменная для обработки посредством инструментов класса
// StringReader
 
        string textReaderText = "TextReader is the abstract base " +
            "class of StreamReader and StringReader, which read " +
            "characters from streams and strings, respectively.\n\n" +
 
            "Create an instance of TextReader to open a text file " +
            "for reading a specified range of characters, or to " +
            "create a reader based on an existing stream.\n\n" +
 
            "You can also use an instance of TextReader to read " +
            "text from a custom backing store using the same " +
            "APIs you would use for a string or a stream.\n\n";
 
        Console.WriteLine("Original text:\n\n{0}", textReaderText);
 
/*создаем две строковые переменные
В первую будем записывать текушую строку,
Во второй будем формировать результат*/
        string aLine, aParagraph = null;
        StringReader strReader = new StringReader(textReaderText);
        while (true)
        {
            aLine = strReader.ReadLine();
            if (aLine != null)
            {
                aParagraph = aParagraph + aLine + " ";
            }
            else
            {
                aParagraph = aParagraph + "\n";
                break;
            }
        }
        Console.WriteLine("Измененый текст:\n\n{0}", aParagraph);
 
        // Выводим и записываем измененый текст
        int intCharacter;
        char convertedCharacter;
        StringWriter strWriter = new StringWriter();
        strReader = new StringReader(aParagraph);
        while (true)
        {
            intCharacter = strReader.Read();
 
            // пока не конец строки 
            // конвертируем intCharacter в символ.
            if (intCharacter == -1) break;
 
            convertedCharacter = Convert.ToChar(intCharacter);
            if (convertedCharacter == '.')
            {
                strWriter.Write(".\n\n");
 
                // Пропускаем места между предложениями.
                strReader.Read();
                strReader.Read();
            }
            else
            {
                strWriter.Write(convertedCharacter);
            }
        }
        Console.WriteLine("\nОригинальный текст:\n\n{0}",
            strWriter.ToString());
    }
}
StringWriter Реализует TextWriter для записи данных в строку.Данные хранятся в основном StringBuilder.
Пример использования:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
Реализует TextWriter для записи данных в строку.Данные хранятся в основном StringBuilder.
 
Пространство имен:  System.IO
Сборка:  mscorlib (в mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class StringWriter : TextWriter
*/
using System;
using System.IO;
 
class StringRW
{
    static void Main()
    {
//строковая переменная для обработки посредством инструментов класса
// StringReader
        string textReaderText = "TextReader is the abstract base " +
            "class of StreamReader and StringReader, which read " +
            "characters from streams and strings, respectively.\n\n" +
 
            "Create an instance of TextReader to open a text file " +
            "for reading a specified range of characters, or to " +
            "create a reader based on an existing stream.\n\n" +
 
            "You can also use an instance of TextReader to read " +
            "text from a custom backing store using the same " +
            "APIs you would use for a string or a stream.\n\n";
 
        Console.WriteLine("Original text:\n\n{0}", textReaderText);
/*создаем две строковые переменные
В первую будем записывать текушую строку,
Во второй будем формировать результат*/
        string aLine, aParagraph = null;
        StringReader strReader = new StringReader(textReaderText);
        while (true)
        {
            aLine = strReader.ReadLine();
            if (aLine != null)
            {
                aParagraph = aParagraph + aLine + " ";
            }
            else
            {
                aParagraph = aParagraph + "\n";
                break;
            }
        }
        Console.WriteLine("Измененый текст:\n\n{0}", aParagraph);
 
        
        // Выводим и записываем измененый текст
 
        int intCharacter;
        char convertedCharacter;
        StringWriter strWriter = new StringWriter();
        strReader = new StringReader(aParagraph);
        while (true)
        {
            intCharacter = strReader.Read();
 
            // пока не конец строки 
            // конвертируем intCharacter в символ.
            if (intCharacter == -1) break;
 
            convertedCharacter = Convert.ToChar(intCharacter);
            if (convertedCharacter == '.')
            {
                strWriter.Write(".\n\n");
 
                // Пропускаем места между предложениями.
 
                strReader.Read();
                strReader.Read();
            }
            else
            {
                strWriter.Write(convertedCharacter);
            }
        }
        Console.WriteLine("\nОригинальный текст:\n\n{0}",
            strWriter.ToString());
    }
TextReader Представляет средство чтения, позволяющее считывать последовательные наборы знаков.
TextWriter Представляет средство записи, позволяющее записывать последовательные наборы символов.Это абстрактный класс.
UnmanagedMemoryAccessor Предоставляет произвольный доступ к неуправляемым блокам памяти из управляемого кода.
UnmanagedMemoryStream Предоставляет доступ к неуправляемым блокам памяти из управляемого кода.

3. Структуры


WaitForChangedResult Содержит сведения о произошедшем изменении.

4. Делегаты


ErrorEventHandler Предоставляет метод, обрабатывающий событие Error объекта FileSystemWatcher.
FileSystemEventHandler Представляет метод, обрабатывающий события Changed, Created или Deleted класса FileSystemWatcher.
RenamedEventHandler Представляет метод, обрабатывающий событие Renamed класса FileSystemWatcher.


5. Перечисления


DriveType Определяет постоянные величины для типов дисков, включая CDRom, Fixed, Network, NoRootDirectory, Ram, Removable и Unknown.
FileAccess Определяет константы чтения, записи или чтения и записи файла.
FileAttributes Предоставляет атрибуты для файлов и папок.
FileMode Описывает, каким образом операционная система должна открывать файл.
FileOptions Представляет дополнительные параметры для создания объекта FileStream.
FileShare Содержит константы, позволяющие управлять типом доступа, который другие объекты FileStream могут осуществлять к тому же файлу.
HandleInheritability Указывает, является ли основной дескриптор наследуемым дочерними процессами.
NotifyFilters Задает изменения, наблюдаемые в файле или папке.
SearchOption Указывает, следует ли выполнять поиск в текущем каталоге или в текущем каталоге и всех подкаталогах.
SeekOrigin Предоставляет поля, представляющие точки ссылки для поиска в потоках.
WatcherChangeTypes Возможные изменения в файле или каталоге.

В заключении хочу привести пример по программному отслеживанию файлов. Данный пример, с некоторыми изменениями рассматривается в книге - Троелсена. Язык программирования С# 2008 и платформа .NET 3.5.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*
Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях каталога или файла в каталоге.
 
Пространство имен:  System.IO
Сборка:  System (в System.dll)
[IODescriptionAttribute("FileSystemWatcherDesc")]
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public class FileSystemWatcher : Component, 
    ISupportInitialize
 
 
*/
using System;
using System.IO;
 
class Test
{
    public static void Main()
    {
        FileSystemWatcher watcher = new FileSystemWatcher();
        try
        {
           //дирректория для отслеживания
            watcher.Path = @"C:\Downloads";
        }
        catch (ArgumentException e)
        {
            Console.WriteLine(e.Message);
            return;
        }
       //какие изменения отслеживать
        watcher.NotifyFilter = NotifyFilters.LastAccess
            | NotifyFilters.LastWrite
            | NotifyFilters.CreationTime
            | NotifyFilters.DirectoryName
            | NotifyFilters.FileName;
        watcher.Filter = "*.*"; /* какие типы файлов (в данном случае все, для отслеживания только txt - watcher.Filter = "*.txt";) */
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(watcher_Renamed);
//начинаем отслеживание
        watcher.EnableRaisingEvents = true;
        while (Console.Read() != 'q') ;
        Console.ReadLine();
 
    }
 
    static void watcher_Renamed(object sender, RenamedEventArgs e)
    {
        Console.WriteLine("File:{0} {1}", e.OldFullPath, e.FullPath);
    }
 
    static void OnChanged(object sender, FileSystemEventArgs e)
    {
        Console.WriteLine("File:{0} {1}", e.FullPath, e.ChangeType);
    }
 
 
 
}
Пример от Microsift
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public class Watcher
{
 
    public static void Main()
    {
    Run();
 
    }
 
    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();
 
        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }
 
        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* 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;
        // Only watch text files.
        watcher.Filter = "*.txt";
 
        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);
 
        // Begin watching.
        watcher.EnableRaisingEvents = true;
 
        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }
 
    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }
 
    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}
Так же, данный FAQ в Word
FAQ для раздела.rar
75
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2010, 11:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пространство имен - System.IO (Работа с файлами, директориями, дисками, памятью) (C#):

Пространство имен System.Windows - C#
Здравствуйте! Появилась непонятная проблема. Не находит System.Windows. Причем только в этом коде. Пытаюсь создать переменную типа Form, но...

Отсутствует пространство имен System.Net - C#
При написании программы на C# в visual studio .Net 2003 нужно добавить пространство имен System.Net. при написании соответствующей строки...

Отсутствует пространство имен System.GetVersionEx - C#
Подскажите что с пространством имен не так мне пишет ошибку типа такого нет а мне именно оно нужно using System.GetVersionEx;

Исчезло пространство имен System.Xml в .NET 4.5.1 - C#
Visuall Studio 2013, Windows 8.1, раньше на дот нет 4,0 использовал классы из пространства имен System.Xml, сейчас его нет в текущей версии...

Добавить пространство имен System.Speech в framework 4.5 - C#
работаю в VS Pro 13. Не могу добавить пространство имен System.Speech, т.е. не имеется самое понятие speech в списке имеющих

Как добавить пространство имен using System.Diagnostics - C#
Здравствуйте, не могу понять как добавить пространство имен using System.Diagnostics, через &quot;Добавить ссылку&quot; нет его(помогите...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2010, 11:24
Привет! Вот еще темы с ответами:

Как подключить пространство имен System.Windows.Media - C#
Хотел поработать с system.windows.media.animation, но не смог подключить пространство имен. Даже windows.media нету, смотрел в ссылках -...

Using System.Runtime.Serialization.Json; (Не удается найти пространство имен) - C#
Подскажите, как подключить? using System.Runtime.Serialization.Json; Ошибку выдает мол Ошибка 1 Имя типа или пространства имен...

пространство имен - C#
Кто-нибудь знает какие using System. надо использовать для этого? windows = WindowHelper.EnumerateTopWindows();

Пространство имен - C#
Как собственно сделать что бы &quot;string ch = my.change + &quot;.txt&quot;;&quot; было что я написал, а не &quot;null.txt&quot;. Если в одном классе размещенно, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru