Строки и файлы

Содержание

Слайд 2

Строки Строка является объектом типа String, значением которого является текст. Текст

Строки

Строка является объектом типа String, значением которого является текст. Текст хранится

в виде последовательной доступной только для чтения набора объектов Char. В конце строки на языке C# отсутствует символ, заканчивающийся на NULL; поэтому строка C# может содержать любое число внедренных символов NULL ("\0"). Свойство Length строки представляет число объектов Char, содержащихся в этой строке, а не число символов Юникода.
В C# ключевое слово string является псевдонимом свойства String. Поэтому String и string эквивалентны
Слайд 3

Строки Объявление и инициализацию строк можно выполнять различными способами: string message1;

Строки

Объявление и инициализацию строк можно выполнять различными способами:
string message1;
string str =

"Пример строки";
char[] letters = { 'A', 'B', 'C' };
string alphabet = new string(letters); 
Слайд 4

Строки Над строками определены следующие операции: присваивание (=); конкатенация (объединение) или

Строки

Над строками определены следующие операции:
присваивание (=);
конкатенация (объединение) или сцепление строк (+);
две

операции проверки эквивалентности: равно (= =) и не равно (!=);
взятие индекса ([]).
Слайд 5

Строки Переприсваивание Строки можно целиком переприсваивать: string s1 = "Hello"; string s2 = s1;

Строки

Переприсваивание
Строки можно целиком переприсваивать:
string s1 = "Hello";
string s2 = s1;

Слайд 6

Строки Объединение строк Можно объединять строки с помощью оператора +: string

Строки

Объединение строк
Можно объединять строки с помощью оператора +:
string s1 = "orange";
string

s2 = "red";
s1 += s2;Console.WriteLine(s1); // напечатается "orangered"
Строковые объекты являются неизменяемыми: после создания их нельзя изменить. Все методы String и операторы C#, которые, как можно было бы представить, изменяют строку, в действительности возвращают результаты в новый строковый объект.
.
Слайд 7

Строки Постоянство строк Строковые объекты являются неизменяемыми: после создания их нельзя

Строки

Постоянство строк
Строковые объекты являются неизменяемыми: после создания их нельзя изменить. Все

методы String и операторы C#, которые, как можно было бы представить, изменяют строку, в действительности возвращают результаты в новый строковый объект.
В примере, когда содержимое строк s1 и s2 объединяется в одну строку, две исходные строки не изменяются. Оператор += создает новую строку с объединенным содержимым. Этот новый объект присваивается переменной s1, а исходный объект, который был присвоен строке s1, освобождается для сборки мусора, поскольку ни одна переменная не содержит ссылку на него.
Слайд 8

Строки Сравнения Самый простой способ сравнения двух строк — использовать операторы

Строки

Сравнения
Самый простой способ сравнения двух строк — использовать операторы == и

!=, осуществляющие сравнение с учетом регистра:
string color1 = "red";
string color2 = "green";
string color3 = "red";
if (color1 == color3) Console.WriteLine("Строки равны");
if (color1 != color2) Console.WriteLine("Строки не равны");
Не допускается использование >,<,>=,<= для сравнения строк. Для строковых объектов существует метод CompareTo(), возвращающий целочисленное значение, зависящее от того, что одна строка может быть меньше (<), равна (==) или больше другой (>). При сравнении строк используется значение Юникода, при этом значение строчных букв меньше, чем значение заглавных.
Слайд 9

Строки Доступ к отдельным знакам Квадратные скобки [] служат для доступа

Строки

Доступ к отдельным знакам
Квадратные скобки [] служат для доступа к отдельным

знакам в объекте string, но при этом возможен доступ только для чтения:
string str = "test";
char x = str[2]; // x = 's';
Слайд 10

Строки В C# существуют два вида строковых констант: обычные константы, которые

Строки

В C# существуют два вида строковых констант:
обычные константы, которые представляют строку

символов, заключённую в кавычки;
@-константы, заданные обычной константой c предшествующим знаком @.
Слайд 11

Строки Обычные константы В обычных константах некоторые символы интерпретируются особым образом.

Строки

Обычные константы
В обычных константах некоторые символы интерпретируются особым образом. Связано это,

прежде всего, с тем, что необходимо уметь задавать в строке непечатаемые символы, такие, как, например, символ табуляции. Возникает необходимость задавать символы их кодом – в виде escape-последовательностей. Для всех этих целей используется комбинация символов, начинающаяся символом "\" - обратная косая черта. Это так называемые Escape-последовательности
Слайд 12

Строки При этом возникают неудобства: например, при задании констант, определяющих путь

Строки

При этом возникают неудобства: например, при задании констант, определяющих путь к

файлу, приходится каждый раз удваивать символ обратной косой черты.
string path2 = "C:\\Users\\Mikant\\Documents";
Слайд 13

Строки @-константы В @-константах все символы трактуются в полном соответствии с

Строки

@-константы
В @-константах все символы трактуются в полном соответствии с их изображением.

Поэтому путь к файлу лучше задавать @-константой. Единственная проблема в таких случаях: как задать символ кавычки, чтобы он не воспринимался как конец самой константы. Решением является удвоение символа.
string path1 = @"C:\Users\Mikant\Documents";
Слайд 14

Строки

Строки

Слайд 15

Строки

Строки

Слайд 16

Строки string s6 = «РГппУ"; Console.WriteLine(s6.ToUpper()); // Напечатается РГППУ string s3

Строки

string s6 = «РГппУ";
Console.WriteLine(s6.ToUpper()); // Напечатается РГППУ
string s3 = "Visual C#

Express";
string s5 = s3.Replace("C#", "Basic");
Сonsole.WriteLine(s5);// напечатается "Visual Basic Express”
string s3 = "Visual C# Express";
string s4 = s3.Substring(7, 2);
Console.WriteLine(s4);// напечатается "C#"
Слайд 17

Строки char razdelitel = ' '; string text = "Шла Саша

Строки

char razdelitel = ' ';
string text = "Шла Саша по шоссе

и сосала сушку";
Console.WriteLine("Исходный текст: '{0}'", text);
string[] words = text.Split(razdelitel);
Console.WriteLine("{0} слов в тексте:", words.Length);
В качестве разделителя может выступать массив символов.
char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string text = "one\ttwo three:four,five six seven";
Console.WriteLine("Original text: '{0}'", text);
string[] words = text.Split(delimiterChars);
Console.WriteLine("{0} words in text:", words.Length);
Слайд 18

Строки Преобразование строк в другие типы С помощью объекта Convert: N

Строки

Преобразование строк в другие типы
С помощью объекта Convert:
N = Convert.ToInt32(s1);
M =

Convert.ToDouble(s2);
F = Convert.ToBoolean(s3);
B = Convert.ToByte(s4);
C = Convert.ToChar(k);
s5= Convert.ToString(x);
Слайд 19

Текстовые файлы в C#

Текстовые файлы в C#

Слайд 20

Классы для работы с файлами Для работы с классами необходимо подключить

Классы для работы с файлами

Для работы с классами необходимо подключить пространство

имен System.IO
using System.IO
Классы:
StreamWriter - Реализует TextWriter для записи символов в поток в определенной кодировке.
StreamReader - Реализует TextReader, который считывает символы из потока байтов в определенной кодировке.
File - Предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов
Слайд 21

Методы класса File CreateText - Создается или открывается файл для записи

Методы класса File

CreateText - Создается или открывается файл для записи текста

в кодировке UTF-8.
AppendText - Создает StreamWriter добавляющий в существующий файл текст в кодировке UTF-8.
OpenText - Открывает для чтения существующий файл, содержащий текст в кодировке UTF-8.
Exists - Определяет, существует ли заданный файл.
ReadAllText(String) - Открывает текстовый файл, считывает все строки файла и затем закрывает файл
ReadAllLines(String) - Открывает текстовый файл, считывает все строки файла и затем закрывает файл.
WriteAllText(String, String) - Создает новый файл, записывает в него указанную строку и затем закрывает файл. Если целевой файл уже существует, он будет переопределен.
WriteAllLines(String, String[]) - Создает новый файл, записывает в него указанный массив строк и затем закрывает файл.
Слайд 22

Методы класса StreamWriter StreamWriter(String) - Инициализирует новый экземпляр класса StreamWriter для

Методы класса StreamWriter

StreamWriter(String) - Инициализирует новый экземпляр класса StreamWriter для указанного

файла с помощью кодировки по умолчанию и размера буфера.
Write(String) - Записывает в поток строку.
WriteLine(String) - Записывает в текстовую строку или поток строку, за которой следует признак конца строки.
Close - Закрывает текущий объект StreamWriter и базовый поток.
Слайд 23

Методы и свойства класса StreamReader StreamReader(String) - Инициализирует новый экземпляр класса

Методы и свойства класса StreamReader

StreamReader(String) - Инициализирует новый экземпляр класса

StreamReader для указанного имени файла.
ReadToEnd - Считывает все символы, начиная с текущей позиции до конца потока.
ReadLine - Выполняет чтение строки символов из текущего потока и возвращает данные в виде строки.
EndOfStream - Получает значение, определяющее, находится ли позиция текущего потока в конце потока.
Слайд 24

Примеры Создание или открытие файла и построчное добавление записей if(File.Exists(@"d:\vbbook.txt")) writefl

Примеры

Создание или открытие файла и построчное добавление записей
if(File.Exists(@"d:\vbbook.txt"))
writefl =

File.AppendText(@"d:\vbbook.txt");
else
writefl = File.CreateText(@"d:\vbbook.txt");
writefl описан начале как
StreamWriter writefl;
Слайд 25

Примеры Построчная запись в файл writefl.WriteLine(textBox1.Text); В конце записи следует закрыть файл: writefl.Close();

Примеры

Построчная запись в файл
writefl.WriteLine(textBox1.Text);
В конце записи следует закрыть файл:
writefl.Close();

Слайд 26

Примеры Открытие файла для чтения if (File.Exists(@"d:\vbbook.txt")) readfl = new StreamReader(@"d:\vbbook.txt");

Примеры

Открытие файла для чтения
if (File.Exists(@"d:\vbbook.txt"))
readfl = new StreamReader(@"d:\vbbook.txt");
else MessageBox.Show("файла

нет");
В начале readfl описан как
StreamReader readfl;
Слайд 27

Примеры Построчное чтение из файла if (readfl.EndOfStream == false) label1.Text =

Примеры

Построчное чтение из файла
if (readfl.EndOfStream == false)
label1.Text = readfl.ReadLine();
else

label1.Text = "end";
В конце чтения надо закрыть файл:
readfl.Close();
Слайд 28

Примеры Чтение файла в массив строк strmas = File.ReadAllLines(@"d:\vbbook.txt"); В начале

Примеры

Чтение файла в массив строк
strmas = File.ReadAllLines(@"d:\vbbook.txt");
В начале массив описан как:
string[]

strmas ;
Слайд 29

Примеры Запись текста из текстового поля в файл File.WriteAllText(@"d:\vbbook.txt",textBox1.Text);

Примеры

Запись текста из текстового поля в файл
File.WriteAllText(@"d:\vbbook.txt",textBox1.Text);

Слайд 30

Задание 1 Имеется текстовый файл “числа.txt”, содержащий целые числа (не более

Задание 1

Имеется текстовый файл “числа.txt”, содержащий целые числа (не более 20).
Переписать

числа из этого файла в файл “без нулей.txt”удалив нули.
Слайд 31

Код программы using System; using System.Collections.Generic; using System.Linq; using System.Text; using

Код программы

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{ class Program
{


static void Main(string[] args)
{ StreamReader readfl;// поток для считывания данных
StreamWriter writefl; //поток для записи данных
int[] massiv=new int[20];//массив чисел
int k = 0; //начальный индекс массива
//проверка, существует ли данный файл
if (File.Exists(@"d:\числа.txt"))
readfl = new StreamReader(@"d:\числа.txt");
else {Console.WriteLine("файла нет");
Console.ReadKey();
return;}
Слайд 32

Код программы //чтение чисел из файла в массив while (readfl.EndOfStream ==

Код программы

//чтение чисел из файла в массив
while (readfl.EndOfStream == false)
{

massiv[k] = Convert.ToInt32(readfl.ReadLine());
k++;
}
//вывод массива на экран
for(int i=0;i Console.WriteLine(massiv[i]);
Console.ReadKey();
readfl.Close(); //закрытие файла
//создание нового файла
writefl=File.CreateText(@"d:\без нулей.txt");
//запись чисел в новый файл
for (int i = 0; i < k; i++)
if (massiv[i] != 0) writefl.WriteLine(massiv[i]);
writefl.Close(); //закрытие файла
}
}
}
Слайд 33

Примеры Новый файл “без нулей.txt”будет иметь вид:

Примеры

Новый файл “без нулей.txt”будет иметь вид:

Слайд 34

Примеры В приведенном выше примере заранее оговаривается максимальное количество чисел в

Примеры

В приведенном выше примере заранее оговаривается максимальное количество чисел в файле(не

более 20), т.к. требуется зарезервировать место для элементов массива.
Кроме этого, в файле каждое число располагалось в отдельной строке.
Слайд 35

Задание 2 Дан файл “перечисление.txt”, содержащий числа, записанные в строке и

Задание 2

Дан файл “перечисление.txt”, содержащий числа, записанные в строке и разделенные

друг от друга запятой. Требуется считать числа из файла и вывести их на экран.
Слайд 36

Код программы using System; using System.Collections.Generic; using System.Linq; using System.Text; using

Код программы

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{ class Program
{


static void Main(string[] args)
{ StreamReader readfl;// поток для считывания данных
string stroka;//строка, куда будут считываться данные
//проверка, существует ли данный файл
if (File.Exists(@"d:\перечисление.txt"))
readfl = new StreamReader(@"d:\перечисление.txt");
else
{ Console.WriteLine("файла нет");
Console.ReadKey();
return; }
Слайд 37

Код программы stroka = readfl.ReadLine();//считывание данных в строку //получение массива строк,

Код программы

stroka = readfl.ReadLine();//считывание данных в строку
//получение массива строк, разделенных запятой

string[] chisla=stroka.Split(',');
//объявление массива чисел такого же размера, как массив строк
int[] massiv=new int[chisla.Length];
// записи элементов из массива строк в числовой массив
for (int i = 0; i < chisla.Length; i++)
massiv[i] = Convert.ToInt32(chisla[i]);
//вывод числового массива на экран
for (int i = 0; i < chisla.Length; i++)
Console.WriteLine(massiv[i]);
Console.ReadKey();
readfl.Close();
}
}
}
Слайд 38

Примеры Результат вывода массива на экран

Примеры

Результат вывода массива на экран

Слайд 39

Примеры Ранее рассматривались примеры, в которых использовались классы StreamWriter и StreamReader.

Примеры

Ранее рассматривались примеры, в которых использовались классы StreamWriter и StreamReader.
Иногда проще

работать со всем файлом, как целым, используя класс File.
Слайд 40

Задание 4 Дан файл”строки.txt”, содержащий набор строк. Получить новый файл “сортировка.txt”,

Задание 4

Дан файл”строки.txt”, содержащий набор строк. Получить новый файл “сортировка.txt”, в

котором эти строки будут отсортированы по алфавиту.
Слайд 41

Код программы using System; using System.Collections.Generic; using System.Linq; using System.Text; using

Код программы

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication2
{ class Program
{

static void Main(string[] args)
{string[] strmas ;//объявление массива строк
//проверка, еслит файл существует, то …
if (File.Exists(@"d:\строки.txt"))
{ //считывание данных в массив сторк
strmas = File.ReadAllLines(@"d:\строки.txt");
//сортировка массива
Array.Sort(strmas);
//запись массива в файл
File.WriteAllLines(@"d:\сортировка.txt", strmas);
}
}
}
}