Visual C++ .NET/File Directory/BinaryWriter

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Binary read and write with BinaryWriter and BinaryReader

<source lang="csharp">

  1. include "stdafx.h"

using namespace System; using namespace System::IO;

ref class Role {

   String ^Name;
   Int32   Strength;
   Boolean IsMale;
   DateTime CreateDate;

public:

   Role();
   Role (String ^Name, int Str, bool IsMale);
   void Print();
   void Save(String ^fname);
   void Load(String ^fname);

}; Role::Role() { } Role::Role (String ^Name, int Str, bool IsMale) {

   this->Name     = Name;
   this->Strength = Str;
   this->IsMale   = IsMale;
   this->CreateDate = DateTime::Now;

} void Role::Print() {

   Console::WriteLine("Name: {0} ({1})", Name, (IsMale ? "M" : "F"));
   Console::WriteLine("Str:  {0}", Strength);
   Console::WriteLine("Date: {0}", CreateDate.ToString());

} void Role::Save(String ^fname) {

   FileStream   ^fs = File::OpenWrite(fname);
   BinaryWriter ^bw = gcnew BinaryWriter(fs);
   bw->Write(Name);
   bw->Write(Strength);
   bw->Write(IsMale);
   bw->Write(CreateDate.Ticks);  
   bw->Close();
   fs->Close();

} void Role::Load(String ^fname) {

   FileStream   ^fs = File::OpenRead(fname);
   BinaryReader ^br = gcnew BinaryReader(fs);
   Name     = br->ReadString();
   Strength = br->ReadInt32();
   IsMale   = br->ReadBoolean();
   CreateDate = DateTime( br->ReadInt64() );
   br->Close();
   fs->Close();

} void main(){

   Role ^r = gcnew Role("r", 10, true);
   r->Save("Role.dat");
   Console::WriteLine("Original r");
   r->Print();
   Role ^rClone = gcnew Role();
   rClone->Load("Role.dat");
   Console::WriteLine("\nCloned r");
   rClone->Print();

}

 </source>