| io/file-copy/mycopy-error-demo.cs - A file copy program with excessive error handling. | Lecture 9 - slide 11 : 30 Program 2 |
using System;
using System.IO;
public class CopyApp {
public static void Main(string[] args) {
FileInfo inFile;
do {
inFile = new FileInfo(args[0]);
if (!inFile.Exists)
args[0] = "some other input file name";
} while (!inFile.Exists);
FileInfo outFile;
do {
outFile = new FileInfo(args[1]);
if (outFile.Exists)
args[1] = "some other output file name";
} while (outFile.Exists);
FileStream inStr = inFile.OpenRead(),
outStr = outFile.OpenWrite();
int c;
do{
c = inStr.ReadByte();
if(c != -1) outStr.WriteByte((byte)c);
if (StreamFull(outStr))
DreamCommand("Fix some extra room on the disk");
} while (c != -1);
inStr.Close();
if (!FileClosed(inStr))
DreamCommand("Deal with input file which cannot be closed");
outStr.Close();
if (!FileClosed(outStr))
DreamCommand("Deal with output file which cannot be closed");
}
/* Programming pseudo commands for the sake of this example */
public static void DreamCommand(string str){
// Carry out the command str
}
public static bool FileClosed(Stream str){
// Return if the stream str is closed
}
public static bool StreamFull(Stream str){
// Return if the stream str is full
}
}