Listing 2
using namespace System;
using namespace System::IO;
void Copy(TextReader^ inStream, TextWriter^ outStream);
int main(array<String^>^ argv)
{
if (argv->Length != 2)
{
Console::WriteLine("Two arguments are needed.");
/*1*/ Environment::Exit(1);
}
try
{
/*2a*/ FileStream^ inFile = gcnew FileStream(argv[0], FileMode::Open);
/*2b*/ StreamReader^ inStream = gcnew StreamReader(inFile);
/*2c*/// StreamReader^ inStream = File::OpenText(argv[0]);
Console::WriteLine("CanRead is {0}, CanWrite is {1}",
inFile->CanRead, inFile->CanWrite);
/*3*/ StreamWriter^ outStream = File::CreateText(argv[1]);
/*4*/ Copy(inStream, outStream);
/*5*/ outStream->Write("{0} * {1} = {2}\n", 10, 5, 10 * 5);
inStream->Close();
outStream->Close();
}
/*6*/ catch (FileNotFoundException^ ex)
{
Console::WriteLine(ex->Message);
}
/*7*/ catch (IOException^ ex)
{
Console::WriteLine(ex);
}
}
/*8*/
void Copy(TextReader^ inStream, TextWriter^ outStream)
{
int c;
while ((c = inStream->Read()) != -1)
{
outStream->Write(static_cast<wchar_t>(c));
}
}