Разделы презентаций


Ввод-вывод

Содержание

Наиболее важные классы пространства имен System.IO

Слайды и текст этой презентации

Слайд 1Ввод-вывод
Сериализация объектов

Ввод-выводСериализация объектов

Слайд 2Наиболее важные классы пространства имен System.IO

Наиболее важные классы пространства имен System.IO

Слайд 3Иерархия типов
Object
Directory
File
FileSystemInfo
DirectoryInfo
FileInfo

Иерархия типовObjectDirectoryFileFileSystemInfoDirectoryInfoFileInfo

Слайд 4Свойства и методы класса FileSystemInfo

Свойства и методы класса FileSystemInfo

Слайд 5Тип DirectoryInfo

Тип DirectoryInfo

Слайд 6Работа с DirectoryInfo
class MyDirectory
{
public static void Main(String[] args)
{
// Создаем объект

DirectoryInfo, соответствующий D:\TEMP
DirectoryInfo dir = new DirectoryInfo(@“C:\TEMP");

// Выводим информацию о

каталоге
Console.WriteLine("***** Directory Info *****");
Console.WriteLine("FullName: {0}", dir.FullName);
Console.WriteLine("Name: {0}", dir.Name);
Console.WriteLine("Parent: {0}", dir.Parent);
Console.WriteLine("Creation: {0}", dir.CreationTime);
Console.WriteLine("Attributes: {0}", dir.Attributes.ToString());
Console.WriteLine("Root: {0}", dir.Root);
Console.WriteLine("***********************\n");
}
}
Работа с DirectoryInfoclass MyDirectory{		public static void Main(String[] args)		{			// Создаем объект DirectoryInfo, соответствующий D:\TEMP			DirectoryInfo dir = new DirectoryInfo(@“C:\TEMP

Слайд 7Перечисление FileAttributes

Перечисление FileAttributes

Слайд 8Доступ к файлам через Directory и FileInfo
class MyDirectory
{
public static void

Main(String[] args)
{
// Создаем объект DirectoryInfo, соответствующий C:\TEMP
DirectoryInfo dir = new

DirectoryInfo(@“C:\TEMP");

// Получаем все файлы с расширением MP3
FileInfo[ ] bitmapFiles = dir.GetFiles("*.mp3");

// А сколько их у нас?
Console.WriteLine("Found {0} *.bmp files\n", bitmapFiles.Length);

// Теперь выводим информацию о каждом файле
foreach (FileInfo f in bitmapFiles)
{
Console.WriteLine("*******************\n");
Console.WriteLine("File name: {0}", f.Name);
Console.WriteLine("File size: {0}", f.Length);
Console.WriteLine("Creation: {0}", f.CreationTime);
Console.WriteLine("Attributes: {0}", f.Attributes.ToString());
Console.WriteLine("*******************\n");
}
}
}
Доступ к файлам через Directory и FileInfoclass MyDirectory{		public static void Main(String[] args)		{			// Создаем объект DirectoryInfo, соответствующий C:\TEMP			DirectoryInfo

Слайд 9Создание подкаталогов при помощи класса DirectoryInfo
class MyDirectory
{
public static void Main(String[]

args)
{
DirectoryInfo dir = new DirectoryInfo(@"C:\TEMP");
...

// Создаем в C:\TEMP новые подкаталоги
try
{
//

Создаем C:\TEMP\MyFoo
dir.CreateSubdirectory("MyFoo");
Console.WriteLine("Created: {0}", d.FullName);

// Создаем C:\TEMP\MyBar\MyQaaz
dir.CreateSubdirectory(@"MyBar\MyQaaz"); Console.WriteLine("Created: {0}", d.FullName);
}
catch(IOException e) { Console.Write(e.Message);}
}
}
Создание подкаталогов при помощи класса DirectoryInfoclass MyDirectory{		public static void Main(String[] args)		{			DirectoryInfo dir = new DirectoryInfo(@

Слайд 10Статические члены класса Directory
public static void Main(String[] args)
{
// Создаем объект

DirectoryInfo, соответствующий C:\TEMP
DirectoryInfo dir = new DirectoryInfo(@"C:\TEMP");
// А теперь

воспользуемся несколькими статическими методами класса Directory

// Выводим информацию обо всех логических дисках
string[ ] drives = Directory.GetLogicalDrives();
Console.WriteLine("Here are your drives:");
foreach(string s in drives) { Console.WriteLine("->{0}", s);}

// Удаляем только что созданные каталоги
Console.Write(Going to delete\n->" + dir.FullName +"\\MyBar\MyQaaz.\nand\an->" +
dir.FullName + “ \\MyFoo.\n" + "Press a key to continue!");
Console.Read();

try
{
Directory.Delete(@"C:\TEMP\MyFoo");
// Необязательный второй параметр определяет, будут ли удалены вложенные подкаталоги
Directory.Delete(@"C:\TEMP\MyBar", true);
}

catch(IOException e) { Console.WriteLine(e.Message); }
}

Слайд 11Класс FileInfo (1)

Класс FileInfo (1)

Слайд 12Класс FileInfo (2)

Класс FileInfo (2)

Слайд 13Манипуляция файлом
public class FileManipulator
{
public static int Main(string[] args)
{
// Создаем новый

файл в корневом каталоге диска C:
FileInfo f = new FileInfo(@"C:\Test.txt");
FileStream

fs = f.Create();

// Выводим основную информацию о созданном нами файле
Console.WriteLine("Creation: {0}", f.CreationTime);
Console.WriteLine("Full Name: {0}", f.FullName);
Console.WriteLine("Full atts: {0}", f.Attributes.ToString());
Console.Write("Press a key to delete file");
Console.Read();

// Закрываем FileStream и удаляем файл
fs.Close();
f.Delete();

return 0;
}
}
Манипуляция файломpublic class FileManipulator{		public static int Main(string[] args)		{			// Создаем новый файл в корневом каталоге диска C:			FileInfo f

Слайд 14Использование метода FileInfo.Open()
// Get a new FileStream

object.
FileInfo f2 = new FileInfo(@"C:\HelloThere.ini");
FileStream s = f2.Open (FileMode.OpenOrCreate,

FileAccess.ReadWrite,
FileShare.None);

// Write 20 bytes to the dat file...
for(int i = 0; i < 256; i++)
{
s.WriteByte((byte)i);
}
Использование метода FileInfo.Open()   // Get a new FileStream object.	FileInfo f2 = new FileInfo(@

Слайд 15Значение перечисления FileMode

Значение перечисления FileMode

Слайд 16Значение перечисления FileAccess
Значение перечисления FileShare

Значение перечисления FileAccessЗначение перечисления FileShare

Слайд 17Методы FileInfo.OpenRead и FileInfo.OpenWritle
FileInfo fr = new FileInfo(@"C:\boot.ini");
FileStream readOnlyStream =

fr.OpenRead();
readOnlyStream.Close();


FileInfo fw = new FileInfo(@"C:\boot.ini");
FileStream writeOnlyStream = fw.OpenWrite();
writeOnlyStream.Close();

Методы FileInfo.OpenRead и FileInfo.OpenWritleFileInfo fr = new FileInfo(@

Слайд 18Методы FileInfo.OpenText, FileInfo.CreateText, FileInfo.AppendText
FileInfo fs = new FileInfo(@"C:\boot.ini");
StreamReader sReader =

fs.OpenText();
sReader.Close();

FileInfo fs = new FileInfo(@"C:\test.txt");
fs.Open(FileMode.Create,FileAccess.ReadWrite)
StreamWriter sWriter = fs.CreateText();
sWriter.Close();

Методы FileInfo.OpenText, FileInfo.CreateText, FileInfo.AppendTextFileInfo fs = new FileInfo(@

Слайд 19Абстрактный класс Stream
Object
Stream
FileStream
BufferedString
MemoryString

Абстрактный класс StreamObjectStreamFileStreamBufferedStringMemoryString

Слайд 20Члены класса Stream

Члены класса Stream

Слайд 21Работа с объектом FileStream
FileStream s = f2.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite,
FileShare.None);

// Write

20 bytes to the dat file...
for(int i = 0; i

< 256; i++)
{
s.WriteByte((byte)i);
}

// Reset internal position.
s.Position = 0;

// Read 20 bytes from the dat file...
for(int i = 0; i < 256; i++)
{
Console.Write(s.ReadByte());
}

s.Close();
Работа с объектом FileStream	FileStream s = f2.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite,				 			FileShare.None);		// Write 20 bytes to the dat file...	for(int i

Слайд 22Работа с объектом MemoryStream
// Создаем объект MemoryStream точно определенного объема
MemoryStream

myMemStream = new MemoryStream();
myMemStream.Capacity = 256;

// Записываем байты в myMemStream
for(int

i = 0; i < 256; i++)
{
myMemStream.WriteByte((byte)i);
}

// Переставляем внутренний указатель на начало
myMemStream.Position = 0;

// Считываем байты из потока
for(int i = 0; i < 256; i++)
{
Console.Write(myMemStream.ReadByte());
}
myMemStream.Close();
Работа с объектом MemoryStream// Создаем объект MemoryStream точно определенного объемаMemoryStream myMemStream = new MemoryStream();myMemStream.Capacity = 256;// Записываем

Слайд 23Наиболее важные члены MemoryStream
FileStream dump= new FileStream("dump.dat",FileMode.Create,FileAccess.ReadWrite);
myMemStream.WriteTo(dump);

byte[ ] bytesinMemory =

myMemStream.ToArray();
myMemStrea.Close();

Наиболее важные члены MemoryStreamFileStream dump= new FileStream(

Слайд 24Класс BufferedStream

// Создаем объект BufferedStream
BufferedStream myFileBuffer

= new BufferedStream(dumpFile);

// Добавляем несколько байт
byte [ ] str =

{127, 0x77, 0x4, 0x0, 0x0, 0x16};
myFileBuffer.Write(str, 0, str.Length);


myFileBuffer.Close(); // Сброс на диск только сейчас

Класс BufferedStream   		// Создаем объект BufferedStream	 		BufferedStream myFileBuffer = new BufferedStream(dumpFile);						// Добавляем несколько байт			byte [

Слайд 25Классы StreamReader и StreamWriter
Object
TextWriter
StreamWriter
StringWriter
TextReader
StreamReader
StringReader

Классы StreamReader и StreamWriterObjectTextWriterStreamWriterStringWriterTextReaderStreamReaderStringReader

Слайд 26Наиболее важные члены TextWriter

Наиболее важные члены TextWriter

Слайд 27Запись в текстовый файл
// Создаем файл
FileInfo f = new FileInfo("Thoughts.txt");

//

Получаем объект StreamWriter и с его помощью записываем в файл


// несколько строк текста
StreamWriter writer = f.CreateText();
writer.WriteLine("Don't forget Mother's Day this year...");
writer.WriteLine("Don't forget Father's Day this year...");
writer.WriteLine("Don't forget these numbers:");

for(int i = 0; i < 10; i++);
{
writer.Write(i + " ");
}
// Вставляем символ начала новой строки
writer.Write(writer.NewLine);

// Метод Close() автоматически очищает все буферы!
writer.Close();
Console.WriteLine("Created file and wrote some thoughts...");

Запись в текстовый файл	// Создаем файл	FileInfo f = new FileInfo(

Слайд 28Наиболее важные члены TextReader

Наиболее важные члены TextReader

Слайд 29Чтение текстового файла
// А теперь выводим информацию из файла на

консоль при помощи
// StreamReader

Console.WriteLine("Here are your thoughts:\n");
StreamReader sr

= File.OpenText("Thoughts.txt");

string input = null;
while ((input = sr.ReadLine()) !=null)
{
Console.WriteLine(input);
}
sr.Close();

string alldata = st.ReadToEnd();
sr.Close();

Чтение текстового файла// А теперь выводим информацию из файла на консоль при помощи // StreamReader Console.WriteLine(

Слайд 30Класс StringWriter
// Получаем объект StringWriter и с его помощью записываем


// в файл несколько строк текста
StringWriter writer = new

StringWriter();
writer.WriteLine("Don't forget Mother's Day this year...");
writer.WriteLine("Don't forget Father's Day this year...");
writer.WriteLine("Don't forget these numbers:");

for(int i = 0; i < 10; i++);
{
writer.Write(i + " ");
}

// Вставляем символ начала новой строки
writer.Write(writer.NewLine);

// Метод Close() автоматически очищает все буферы!
writer.Close();
Console.WriteLine("Stored thoughts in a StringWriter...");

// Получаем копию содержимого StringBuffer (в виде значения типа string)
// и выводим ее на консоль
Console.WriteLine("Contents: {0}", writer.ToString());
Класс StringWriter// Получаем объект StringWriter и с его помощью записываем // в файл несколько строк текста StringWriter

Слайд 31Доступ через StringWriter.GetStringBuilder()
// Получаем объект StringBuilder и выводим его содержимое


StringBuilder str = writer.GetStringBuilder();
string allOfTheData = str.ToString();
Console.WriteLine("StringBuilder says:\n{0} ", allOfTheData);

//

Вставляем в буфер новый элемент, позиция вставки 20
str.Insert(20, "INSERTED STUFF");
allOfTheData = str.ToString();
Console.WriteLine("New StringBuilder says:\n{0}", allOfTheData);

// Удаляем вставленный элемент
str.Remove(20, "INSERTED STUFF".Length);
allOfTheData = str.ToString();
Console.WriteLine("Original says:\n{0}", allOfTheData);
Доступ через StringWriter.GetStringBuilder()// Получаем объект StringBuilder и выводим его содержимое StringBuilder str = writer.GetStringBuilder();string allOfTheData = str.ToString();Console.WriteLine(

Слайд 32Доступ через StringWriter.GetStringBuilder()
// Получаем объект StringBuilder и выводим его содержимое


StringBuilder str = writer.GetStringBuilder();
string allOfTheData = str.ToString();
Console.WriteLine("StringBuilder says:\n{0} ", allOfTheData);

//

Вставляем в буфер новый элемент, позиция вставки 20
str.Insert(20, "INSERTED STUFF");
allOfTheData = str.ToString();
Console.WriteLine("New StringBuilder says:\n{0}", allOfTheData);

// Удаляем вставленный элемент
str.Remove(20, "INSERTED STUFF".Length);
allOfTheData = str.ToString();
Console.WriteLine("Original says:\n{0}", allOfTheData);
Доступ через StringWriter.GetStringBuilder()// Получаем объект StringBuilder и выводим его содержимое StringBuilder str = writer.GetStringBuilder();string allOfTheData = str.ToString();Console.WriteLine(

Слайд 33Доступ через StringWriter.GetStringBuilder()
StringReader sr = new StringReader(writer.ToString());

string input = null;
while

((input = sr.ReadLine()) != null)
{
Console.WriteLine (input);
}

sr.Close();

Доступ через StringWriter.GetStringBuilder()	StringReader sr = new StringReader(writer.ToString());				string input = null;	while ((input = sr.ReadLine()) != null)	{		Console.WriteLine (input);	}	sr.Close();

Слайд 34Наиболее важные члены BinaryWriter
Наиболее важные члены BinaryReader

Наиболее важные члены BinaryWriterНаиболее важные члены BinaryReader

Слайд 35Запись двоичных файлов
FileStream myFStream = new FileStream("temp.dat",

FileMode.OpenOrCreate, FileAccess.ReadWrite);

// Записываем двоичные данные
BinaryWriter binWrit = new BinaryWriter(myFStream);
binWrit.WriteString("Hello as binary info...");
int myInt = 99;
float myFloat = 9984.82343F;
bool myBool = false;
char[] myCharArray = {'H', 'e', 'l', 'l', 'o'};
binWrit.Write(myInt);
binWrit.Write(myFloat);
binWrit.Write(myBool);
binWrit.Write(myCharArray);
Запись двоичных файловFileStream myFStream = new FileStream(

Слайд 36Чтение двоичных файлов
// Устанавливаем внутренний указатель на начало
binWrit.BaseStream.Position = 0;

//

Считываем двоичную информацию как поток байтов
Console.WriteLine("Reading binary data...");
BinaryReader binRead =

new BinaryReader(myFStream);
int temp = 0;
while(binRead.PeekChar() != -1)
{ Console.Write(binRead.ReadByte());
temp = temp + 1;
if(temp = = 5)
{ // Добавляем пустую строку через каждые 5 байтов
temp = 0;
Console.WriteLine();
}
}
// Все закрываем
binWrit.Close(); binRead.Close(); myFStream.Close();
Чтение двоичных файлов// Устанавливаем внутренний указатель на началоbinWrit.BaseStream.Position = 0;// Считываем двоичную информацию как поток байтовConsole.WriteLine(

Слайд 37Вывод стандартных объектов
// Открываем файл изображения в каталоге приложения
Console.WriteLine("Modifying a

bitmap in memory");
myFStream = new FileStream("Paint Splatter.bmp", FileMode.Open, FileAccess.ReadWrite);

// Создаем

объект Bitmap на основе открытого потока
Bitmap rawBitmap = new Bitmap(myFStream);

// Рисуем белый крест поперек изображения (наш код применим лишь в том
// случае, если высота и ширина изображения одинаковы)
for(int i = 0; i < rawBitmap.Width; i++)
{
rawBitmap.SetPixel(i, i, Color.White);
rawBitmap.SetPixel(rawBitmap.Width - i) - 1, i - 1, Color.White);
}

// А теперь сохраняем измененное изображение в файл
rawBitmap.Save("newImage.bmp");
myFStream.Close();
Вывод стандартных объектов// Открываем файл изображения в каталоге приложенияConsole.WriteLine(

Слайд 38Сохранение объектов .NET
Сериализация – процесс преобразования объекта в линеную последовательность

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

Сохранение объектов .NETСериализация – процесс преобразования объекта в линеную последовательность байтСериализация подразумевает сохранение информации и родительских объектах

Слайд 39Настройка объектов для сериализации
// Класс Radio может быть сериализован
[Serializable]
public class

Radio
{
// Однако нам нет необходимости сохранять это число
[NonSerialized]
private int objectIDNumber

= 9;

public Radio(){}
public void On(bool state)
{
if(state = = true)
MessageBox.Show("Music is on...");
else
MessageBox.Show("No tunes...");
}
}
Настройка объектов для сериализации// Класс Radio может быть сериализован[Serializable]public class Radio{		// Однако нам нет необходимости сохранять это

Слайд 40Сериализация в двоичном формате
using System.Runtime.Serialization.Formatters.Binary;

public static void Main()
{
// Создаем объект

JamesBondCar и выполняем с ним всякие действия
JamesBondCar myAuto =

new JamesBondCar("Fred", 50, false, true);
myAuto.TurnOnRadio(true);
myAuto.GoUnderWater();

// Создаем поток для записи в файл
FileStream myStream = File.Create("CarData.dat");

// Помещаем объектный граф в поток в двоичном формате
BinaryFormatter myBinaryFormat = new BinaryFormatter();
myBinaryFormat.Serialize(myStream, myAuto);
myStream.Close();
...
}
Сериализация в двоичном форматеusing System.Runtime.Serialization.Formatters.Binary;public static void Main(){		// Создаем объект JamesBondCar и выполняем с ним всякие действия

Слайд 41Полученный двоичный файл

Полученный двоичный файл

Слайд 42Десериализация в двоичном формате
using System.Runtime.Serialization.Formatters.Binary;

public static void Main()
{

myStream = FileOpenRead("CarData.dat");

JamesBondCar

carFromDisk = (JamesBondCar) myBinaryFormat.Deserialize(myStream);

Console.WriteLine(CarFromDisk.PetName);
CarFromDisk.TurnOnRadio(true);
myStream.Close();

}

Десериализация в двоичном форматеusing System.Runtime.Serialization.Formatters.Binary;public static void Main(){myStream = FileOpenRead(

Слайд 43Сериализация в формате SOAP
using System.Runtime.Serialization.Formatters.Soap;

// Сохраняем тот же самый объект

в формате SOAP
FileStream myStream = File.Create("CarData.xml");
SoapFormatter myXMLFormat = new SoapFormatter();
myXMLFormat.Serialize(myStream,

myAuto);
myStream.Close();

// Восстанавливаем объект из файла SOAP
myStream = File.OpenRead("CarData.xml");
JamesBondCar carFromXML = (JamesBondCar)myXMLFormat.Deserialize(myStream);

Console.WriteLine(carFromXML.PetName + " is alive!");
myStream.Close();
Сериализация в формате SOAPusing System.Runtime.Serialization.Formatters.Soap;// Сохраняем тот же самый объект в формате SOAPFileStream myStream = File.Create(

Слайд 44Результирующий XML-файл



false
true

id="ref-3">Fred
50


50






Результирующий XML-файлfalsetrueFred5050

Слайд 45Пользовательская сериализация
// Интерфейс ISerializable

public interface ISerializable
{
public virtual void GetObjectData (Serialization

info, SreamingContext context);
}

// Специальный конструктор для десериализации
Class SoeClass
{
private SomeClass

(Serialization si, SreamingContext ctx) { … }
}

Пользовательская сериализация// Интерфейс ISerializablepublic interface ISerializable{ public virtual void GetObjectData (Serialization info, SreamingContext context);}// Специальный конструктор для

Слайд 46Класс SerializationInfo
AddValue() – многократно перегружен
GetXXXX() – GetString, GetInt32 …

Класс SerializationInfoAddValue() – многократно перегруженGetXXXX() – GetString, GetInt32 …

Слайд 47Простой пример пользовательской сериализации
public class CustomCarType : ISerializable
{ public string petName;
public

int maxSpeed;
public CustomCarType(string s, int i) { petName = s;

maxSpeed = i; }

// Передаем информацию о состоянии объекта объекту Formatter
public void GetObjectData(SerializationInfo si, StreamingContext ctx)
{
// Каков тип нашего потока?
Console.WriteLine("[GetObjectData] Context State: {0}", ctx.State.Format());

si.AddValue("CapPetName", petName);
si.AddValue("MaxSpeed", maxSpeed);
}
// А теперь позаботимся о специальном варианте конструктора
private CustomCarType(SerializationInfo si, StreamingContext ctx)
{
// Каков тип нашего потока?
Console.WriteLine("[ctor] Context State: {0}", ctx.State.Format());

petName = si.GetString("CapPetName");
maxSpeed = si.GetInt32("maxSpeed");
}
}
Простой пример пользовательской сериализацииpublic class CustomCarType : ISerializable{		public string petName;		public int maxSpeed;		public CustomCarType(string s, int i) {

Слайд 48Простой пример пользовательской сериализации
public static int Main(string[] args)
{
CustomCarType myAuto =

new CustomCarType("Siddhartha", 50);
Stream myStream = File.Create("CarData.dat");

// Задействуем интерфейс ISerializable
BinaryFormatter myBinaryFormat

= new BinaryFormatter();
myBinaryFormat.Serialize(myStream, myAuto);
myStream.Close();

myStream = File.OpenRead("CarData.dat");

// Вызываем спецконструктор
CustomCarType carFromDisk =
(CustomCarType)myBinaryFormat.Deserialize(myStream);

Console.WriteLine(carFromDisk.petName + " is alive!");
return 0;
}
Простой пример пользовательской сериализацииpublic static int Main(string[] args){		CustomCarType myAuto = new CustomCarType(

Слайд 49Использование диалога Open
protected void menuItemOpen_Click (object sender, System.EventArgs e)
{
// Настраиваем

свойства диалогового окна для открытия файлов
OpenFileDialog myOpenFileDialog = new

OpenFileDialog();
myOpenFileDialog.InitialDirectory = ".";
myOpenFileDialog.Filter = "car files (*.car)|*.car|All files(*.*)|*.*";
myOpenFileDialog.FilterIndex = 1;
myOpenFileDialog.RestoreDirectory = true;

// Восстанавливаем объекты автомобилей
if(myOpenFileDialog.ShowDialog() = = DialogResult.OK)
{ // Очищаем текущий массив
arTheCars.Clear();

Stream myStram = null;
if((myStream = myOpenFileDiaog.OpenFile()) != null)
{
BinaryFormatter myBinaryFormat = new BinaryFormatter();
arTheCars = (ArrayList)myBinaryFormat.Deserilize(myStream);
myStream.Close();
UpdateGrid();
}
}
}
Использование диалога Openprotected void menuItemOpen_Click (object sender, System.EventArgs e){	// Настраиваем свойства диалогового окна для открытия файлов 	OpenFileDialog

Слайд 50Использование диалога Save As
protected void menuItemSave_Click (object sender, System.EventArgs e)
{
//

Настраиваем свойства диалогового окна для сохранения файлов
SaveFileDialog mySaveFileDialog =

new SaveFileDialog();
mySaveFileDialog.InitialDirectory = ".";
mySaveFileDialog.Filter = "car files (*.car)|*.car|All files(*.*)|*.*";
mySaveFileDialog.FilterIndex = 1;
mySaveFileDialog.RestoreDirectory = true;
mySaveFileDialog..FileName = "carDoc";

// Сохраняем объекты автомобилей
if(mySaveFileDialog.ShowDialog() = = DialogResult.OK)
{
Stream myStram = null;
if((myStream = mySaveFileDiaog.OpenFile()) != null)
{
BinaryFormatter myBinaryFormat = new BinaryFormatter();
myBinaryFormat.Serialize(myStream, arTheCars);
myStream.Close();
}
}
}
Использование диалога Save Asprotected void menuItemSave_Click (object sender, System.EventArgs e){	// Настраиваем свойства диалогового окна для сохранения файлов

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика