9
File Systems • Files and directories • Absolute and relative names • Text and binary files • Sequential-access and random- access files

File Systems Files and directories Absolute and relative names Text and binary files Sequential-access and random-access files

Embed Size (px)

Citation preview

Page 1: File Systems Files and directories Absolute and relative names Text and binary files Sequential-access and random-access files

File Systems

• Files and directories

• Absolute and relative names

• Text and binary files

• Sequential-access and random-access files

Page 2: File Systems Files and directories Absolute and relative names Text and binary files Sequential-access and random-access files

File System Input and Output

One time access vs over-a-period-of- time access

•One time: call a static member function

•Over-a-period-of- time: create an instance of a class

Classes for Files

File

FileInfo

Classes for Directories

Directory

DirectoryInfo

Page 3: File Systems Files and directories Absolute and relative names Text and binary files Sequential-access and random-access files

File and FileInfo in C++/CLI• File::Exists(path)

• FileInfo^ file = gcnew FileInfo( path );• file->Exists• file->FullName• file->Length• file->Directory• file->isReadOnly• file->CopyTo( path2 )• http://msdn.microsoft.com/en-us/library/

system.io.file.aspx• http://msdn.microsoft.com/en-us/library/

system.io.fileinfo.aspx

Page 4: File Systems Files and directories Absolute and relative names Text and binary files Sequential-access and random-access files

Directory and DirectoryInfo in C++/CLI

• Directory::Exists(path)

• DirectoryInfo^ dir=gcnew DirectoryInfo(path);• dir->Exists• dir->FullName• dir->Parent• array<FileInfo^>^ GetFiles()• array<DirectoryInfo^>^ GetDirectories()• http://msdn.microsoft.com/en-us/library/

system.io.directory.aspx• http://msdn.microsoft.com/en-us/library/

system.io.directoryinfo.aspx

Page 5: File Systems Files and directories Absolute and relative names Text and binary files Sequential-access and random-access files

Opening Files and I/O• Open, Create, OpenRead, etc.

• Open Methods– Mode: Append, Create, CreateNew, Open, etc

– Access: Read, Write, ReadWrite– Share: None, Read, Write, ReadWrite

• Stream, FileStream, StreamWriter, StreamReader

Page 6: File Systems Files and directories Absolute and relative names Text and binary files Sequential-access and random-access files

Sequential-access Text File in C++/CLI• StreamReader ^sr = File::OpenText(name);

// or:

• StreamReader ^sr = gcnew StreamReader(name);• sr->Read(); // read one char• sr->ReadLine(); // read one line• sr->Close()

• StreamWriter ^sw = gcnew StreamWriter(name);• sw->Write(“string”);• sw->WriteLine(“string”);• sw->Close()

Page 7: File Systems Files and directories Absolute and relative names Text and binary files Sequential-access and random-access files

Object Serialization in C++/CLI• Dealing with complex classes

• [Serializable] ref class MyObject {}

• BinaryFormatter:• using namespace

System::Runtime::Serialization::Formatters::Binary;

• SoapFormatter:

• // Simple Objet Access Protocol, XML• #using <System.Runtime.Serialization.Formatters.Soap.dll>• using namespace

System::Runtime::Serialization::Formatters::Soap;

Page 8: File Systems Files and directories Absolute and relative names Text and binary files Sequential-access and random-access files

Object Serialization in C++/CLI cont’d

Serialization steps: •BinaryFormatter ^bf = gcnew BinaryFormatter()

// SoapFormatter, XML-based •FileStream output = File::Create(name);•bf->Serialize(output, obj); // Store MyObject obj;•output.close();

•BinaryFormatter ^bf = gcnew BinaryFormatter() •FileStream input = File::OpenRead(name);•MyObject^ obj = (MyObject^)bf->Deserialize(input); //Restore MyObject obj

•input.close();

Page 9: File Systems Files and directories Absolute and relative names Text and binary files Sequential-access and random-access files

An Example

• …

• Also,

• Command line parameters:

• “Project” -> “Properties” -> “Configuration Properties” -> “Debugging”– On that page, find “Command Arguments”, add

the file name