Streaming Data:
// Explorer Directory
string dir = @"C:\Winnt";
DirectoryInfo dirInfo = new DirectoryInfo(dir);
//read and write File
Stream inputStream = File.OpenRead(@"c:\test\source\hamlet.txt");
Stream outputStream = File.OpenWrite(@"c:\test\source\hamlet.bak");
byte[] buff = new Byte[SizeBuff];
int byteRead;
bytesRead = inputStream.Read(buffer, 0, SizeBuff);
while (bytesRead >0)
{
outputStream.Write(buffer, 0 bytesRead);
bytesRead = inputStream.Read(buffer, 0, SizeBuff);
}
inputStream.Close();
outputStream.Close();
//buffed stream
Stream inputStream = File.OpenRead(@"c:\test\source\hamlet.txt");
Stream outputStream = File.OpenWrite(@"c:\test\source\hamlet.bak");
BufferedStream buffIn = new BufferedStream(inputstream);
BufferedStream buffOut = new BufferedStream(outputStream);
byte[] buffer = new Byte[SizeBuff];
int bytesRead;
while ((bytesRead = buffIn.Read(buffer.0,SizeBuff))> 0)
{
buffOut.Write(buffer,0, butesRead)
}
buffOut.Flush();
buffIn.close();
buffOut.close();
//StreamRead, work with text file
Fileinfo theSourceFile = new FileInfo(
@"c:\test\source\hamlet.txt");
StreamReader reader = theSourceFile.OpenText();
StreamWriter writer = new StreamWriter(@"c:\hamlet.bak", false);
string text;
do {
text = reader.ReadLine();
writer.WriteLine(text);
} wheil (text != null);
Asynchronous:
//Steps:
//1. Begin Read(), Give Buffer,CallBack method
//2. When buffer is filled, call CallBack fucntion and send back AsyncResult token
//3. In CallBack method call EndRead() and send back got token AsyncResult
//4. Data is available
public class AsyncTest{
private Stream inStream;
private AsyncCallback callBackMethod;
private byte[] buffer;
AsyncTest()
{
inStream = File.OpenRead(@"c:\a.txt");
buffer = new byte[BuffSize];
callBackMethod = new AsyncCallback(this.OnCompletedRead);
}
void OnCompletedRead(IAsyncResult asyncResult)
{
int bytesRead = inStream.EndRead(asyncResult);
if (butesRead >0)
{
string s =
Encoding.ASCII.GetString(buffer, 0, butesRead);
inStream.BeginRead(buffer, 0, buffer.Length,
callBackMethod, null);
}
}
public Main()
{
AsyncTest tester = new AsyncTest();
inStream.BeginRead(
buffer,
0, //offset
buffer.Length,
callBackMethod, //call back delegate
null ); //local state object
for(long i = 0; i< 500000, i++)
{
Console.WriteLine("i: {0}", i);
}
}
}
HttpWebRequest:
//1. call WebRequest.Create(), static method, will return WebRequest
//2. call WebRequest.GetResponse(), instance method, return a WebResponse
//3. call WebResponse.GetResponseStream, instance method, return a stream reader
//4. call streamReader.ReadToEnd() return a string with the entire stream
using System.Net;
using System.Sockets;
HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create("http://a.com");
HttpWebResponse webResponse = (HttpWebResponse) webRequest.GetResponse();
StreamReader streamReader = new StreamReade(
webResponse.GetResponseStream(), Encoding.ASCII);
try
{
string outputString;
outputString = streamReader.ReadToEnd();
Console.WriteLine(outputStirng);
}
catch {}
}