Similar presentations:
Язык программирования C# 6.0. Модуль 10
1. Язык программирования C# 6.0 модуль 10
www.specialist.ru2. Работа с файлами и каталогами
File - статические методы для создания, копирования,удаления и перемещения файлов.
FileInfo - методы экземпляра для создания,
копирования, удаления и перемещения файлов.
Directory - статические методы для создания,
перемещения и перечисления файлов в каталогах.
DirectoryInfo - методы экземпляра для создания,
перемещения и перечисления файлов в каталогах.
Path - методы и свойства для обработки имён
каталогов кроссплатформенным способом.
www.specialist.ru
2
3.
Добавление текста в файл:string path = @"C:\Users\student\books.txt";
if (File.Exists(path))
File.AppendAllText(path, “some text \r\n new line");
Поиск по дереву каталогов:
string path = @"C:\Users\student\Desktop";
string[] books = Directory.GetFiles(path, "*.pdf",
SearchOption.AllDirectories);
foreach (string s in books)
Console.WriteLine(s);
www.specialist.ru
3
4. Потоки байтов
FileStream — для чтения и записи в файл.MemoryStream — для чтения и записи в память.
BufferedStream — для повышения быстродействия
операций чтения и записи.
NetworkStream — для чтения и записи на сетевые
сокеты.
PipeStream — для чтения и записи в анонимные и
именованные каналы.
CryptoStream — для связи потоков данных с
криптографическими алгоритмами.
www.specialist.ru
4
5.
Чтение байтов из файла:string path = @"C:\Users\student\books.txt";
FileStream fs = File.OpenRead(path);
// FileStream fs = new FileStream(path, FileMode.Open,
FileAccess.Read);
int ch;
while( (ch = fs.ReadByte()) != -1)
Console.Write(char.ConvertFromUtf32(ch));
fs.Close();
// вызывает Dispose(true)
fs.Dispose();
// рекомендуется вызывать именно его
www.specialist.ru
5
6. Потоки символов
BinaryReader и BinaryWriter - для чтения и записипростых типов данных, например: double.
TextReader и TextWriter - абстрактные базовые
классы. Их наследники:
• StreamReader и StreamWriter - для чтения и
записи текстов с учётом кодировки символов.
• StringReader и StringWriter - для чтения и записи
символов в строки или из строк.
www.specialist.ru
6
7.
Чтение текстового файла:string line;
StreamReader tr = null;
string path = @"C:\Users\student\books.txt";
try
{
tr = new StreamReader(path, Encoding.GetEncoding(1251));
while ((line = tr.ReadLine()) != null)
Console.WriteLine(line);
}
finally {
if (tr!=null)
tr.Dispose();
}
www.specialist.ru
7
8.
Чтение текстового файла (вариант с using):string line;
string path = @"C:\Users\student\books.txt";
using (StreamReader tr = new StreamReader(path,
Encoding.GetEncoding(1251) ))
{
while ((line = tr.ReadLine()) != null)
Console.WriteLine(line);
}
www.specialist.ru
8
9. Работа с архивами
ZipArchive — набор сжатых файлов в формате ZIP.ZipArchiveEntry — сжатый файла в архиве.
ZipFile — статические методы для работы с архивом.
ZipFileExtensions — расширяющие методы для работы с
архивом.
DeflateStream — для сжатия и распаковки потоков с
помощью алгоритма Deflate.
GZipStream — для сжатия и распаковки потоков в формате
gzip.
www.specialist.ru
9
10.
Извлечение всех файлов из архива ZIP:string zipPath = @"C:\Users\student\Desktop\java.zip";
string extractPath = @"C:\Users\student\Desktop";
using (ZipArchive archive =
ZipFile.Open(zipPath, ZipArchiveMode.Read))
{
archive.ExtractToDirectory(extractPath);
}
www.specialist.ru
10
11. Сериализация в .Net
Разрешена для коллекций и многих встроенныхтипов.
Для пользовательских типов надо дать разрешение:
[Serializable()]
class Star { }
Можно исключить часть членов объекта из
сериализации:
[Serializable()]
class Star {
[field: NonSerialized()] int count;
}
Выбрать формат данных: BinaryFormatter или
SoapFormatter (XML)
www.specialist.ru
11
12.
Сохранение данных объекта в двоичном формате:Star star = new Star();
Stream stream = File.Create(“star.bin”);
BinaryFormatter serializer = new BinaryFormatter
();
serializer.Serialize(stream, star);
stream.Dispose();
Чтение
Stream stream = File.OpenRead
(“star.bin”);
BinaryFormatter serializer = new BinaryFormatter
();
Star star =
(Star)serializer.Deserialize(stream);
stream.Dispose();
www.specialist.ru
12
13.
А если хотим изменить, то как происходитсохранение?
[Serializable]
public class Star : ISerializable {
public Star() { }
int
mass;
public void GetObjectData ( SerializationInfo info,
StreamingContext context)
{
info.AddValue(“mass", mass, typeof(int));
}
public Star (SerializationInfo info, StreamingContext context)
{
mass= (int) info.GetValue(“mass", typeof(int));
}
}
www.specialist.ru
13
14. Практика
Откройте консольное приложение Lab10.Добавьте код, в метод Main, необходимый для
сериализации объекта Books в XML формате.
Запустите программу и убедитесь в наличие
сохранённых данных объекта Books.
Выполните десериализацию.
www.specialist.ru
14