Presentation is loading. Please wait.

Presentation is loading. Please wait.

BIM313 – Advanced Programming File Operations 1. Contents Structure of a File Reading/Writing Texts from/to Files File and Directory Operations 2.

Similar presentations


Presentation on theme: "BIM313 – Advanced Programming File Operations 1. Contents Structure of a File Reading/Writing Texts from/to Files File and Directory Operations 2."— Presentation transcript:

1 BIM313 – Advanced Programming File Operations 1

2 Contents Structure of a File Reading/Writing Texts from/to Files File and Directory Operations 2

3 Definition of File A file is a logically contiguous stream of bytes with certain properties – Name – Size (Number of bytes in the file) – Owner (The user who owns the file) – Permission (Who can access the file) – Creation date – Last modification date – etc. 3

4 File Types Text Files – In a text file, the byte represent characters making it possible for a human to examine the file or edit it using a text editor Files which can be opened by Notepad C# source codes Binary Files – In a binary file, bytes do not necessarily represent characters. Groups of bytes might represent an int, float, double, etc. Executable files Word, Excel, PowerPoint files Files which can’t be opened by Notepad 4

5 5 Consider how we can store short int 30000 = 0x7530, which occupies 2 bytes in memory – One option is to store the number in text form as chars ‘3’, ‘0’, ‘0’, ‘0’, ‘0’ Using ASCII chars, we need 5 bytes to store this number Text File vs. Binary File ‘3’‘0’ TextFileEx.txt 5 bytes long 01234 Byte # –The other option is to store the number in binary, which would take as few as 2 bytes 0x300x75 BinaryFileEx.dat 2 bytes long 01 Byte # Assumes little-endian representation

6 Text File vs. Binary File Why distinguish between text and binary files? – The reason is some operating systems, e.g., Windows stores text files and binary files in different ways – Text files are divided into lines, so there must be some special way o mark the end of each line – Binary files are easy to use by programs and text files are easy to understand for humans 6

7 File Classes in.NET Framework 7

8 File Operations Creating a new file Appending to an existing file Reading an existing file 8

9 Creating a Text File Create a StreamWriter object by specifying a file path Use functions Write and WriteLine to write into the file, just like printing on the screen Close the file 9

10 Example using System.IO; namespace FileOpDeneme { class Program { static void Main(string[] args) { StreamWriter sw = new StreamWriter("Test.txt"); sw.WriteLine("Roses are red"); sw.WriteLine("Violets are blue"); sw.Close(); } 10

11 Appending to a Text File When you create a StreamWriter object by new StreamWriter(filename), and file exists, then the file contents are deleted If you want to append to an existing file, use another constructor of StreamWriter class, which is StreamWriter(string path, bool append) 11

12 Example using System.IO; namespace FileOpDeneme { class Program { static void Main(string[] args) { StreamWriter sw = new StreamWriter("Test.txt", true); sw.WriteLine("Sugar is sweet"); sw.WriteLine("And so are you"); sw.Close(); } 12

13 Reading an Existing File Create a StreamReader object by specifying the file path Use ReadLine() method to read a single line, or ReadToEnd() method to read all contents of the file Close the file 13

14 Example using System; using System.IO; namespace FileOpDeneme { class Program { static void Main(string[] args) { StreamReader sr = new StreamReader("Test.txt"); string contents = sr.ReadToEnd(); Console.WriteLine(contents); sr.Close(); } 14

15 using The files should be closed immediately after finishing work on them If you forget to close a file, some problems may occur If you use the file inside a using block, it is automatically closed, i.e. all of its resources are released 15

16 Example using System; using System.IO; namespace FileOpDeneme { class Program { static void Main(string[] args) { string contents; using (StreamReader sr = new StreamReader("Test.txt")) { contents = sr.ReadToEnd(); } Console.WriteLine(contents); } 16

17 Path Names and Relative Paths If you don’t specify the path of a file, it is searched in the current directory, i.e. the directory where your executable file is located You can learn the current directory by the method Directory.GetCurrentDirectory() You can set the working directory by Directory.SetCurrentDirectory() You can specify the full path of the file like @“C:\MyPrograms\BIM313\Test.txt” 17

18 The FileStream Object With StreamReader and StreamWriter objects, you can work only on characters If you need to work on bytes, you have to use a FileStream object On a FileStream object, you can go forward or backward on the file, and read from or write to anywhere on the file 18

19 Obtaining File and Directory Information The FileInfo class can be used to obtain information about a specific file FileInfo info = new FileInfo(“Test.txt”); info.Attributes, info.CreationTime, info.LastAccessTime, info.LastWriteTime, info.Length, etc. If you want to obtain information about a directory, you can use the DirectoryInfo class DirectoryInfo info = new DirectoryInfo(@“c:\”); info.Parent, info.Root, info.GetFiles(), info.GetDirectories(), etc. 19

20 File System Operations File.Copy(src, dest): src is copied to dest File.Move(src, dest): src is moved to dest File.Delete(filename): Deletes the file File.Exists(file): Returns true if file exists Check for other static methods in the File class 20

21 Directory Operations Directory.CreateDirectory() Directory.Delete() Directory.Exists() Directory.Move() Directory.GetCurrentDirectory() Directory.SetCurrentDirectory() Directory.GetLogicalDrives() etc. 21

22 Some Advanced Topics 22

23 Monitoring the File System Your program can be notified when a file or directory is being modified For this purpose, you can use the FileSystemWatcher class For more information, you may refer to the textbook, MSDN help, or Google 23

24 Compressed Files You can use DeflateStream and GZipStream classes to read and write compressed data from and to files These classes work with byte data much like FileStream The classes are located under the System.IO.Compression namespace For more information, refer to the textbook, MSDN help, or Google 24

25 Binary Files You can use BinaryReader and BinaryWriter classes to work on binary files You can serialize objects so that they can be saved to or read from files – Refer as Serialization For more information, refer to the textbook, MSDN help, or Google 25


Download ppt "BIM313 – Advanced Programming File Operations 1. Contents Structure of a File Reading/Writing Texts from/to Files File and Directory Operations 2."

Similar presentations


Ads by Google