C#学习笔记之六(stream, Asynchronous data read, HttpWebRequest

原创 2007年09月17日 15:02:00
 

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 {}
 }


作者Blog:http://blog.csdn.net/bugfree/
相关文章
 

相关文章推荐

异步的HTTP POST与GET请求例子

Get方法: private void HttpGet()         {             WebClient wc = new WebClient();             ...
  • cyb331
  • cyb331
  • 2013年02月06日 16:01
  • 8267

C# HttpWebRequest 异步请求

异步请求://定义委托 public delegate void Asyncdelegate(WebProxy objName); //异步调用完成时,执行回调方法 private void Cal...
  • JH_Wiki
  • JH_Wiki
  • 2016年10月28日 14:21
  • 3652

学习笔记20151211——AXI4 STREAM DATA FIFO

AXI4 STREAM DATA FIFO是输入输出接口均为AXIS接口的数据缓存器,和其他fifo一样是先进先出形式。可以在跨时钟域的应用中用于数据缓冲,避免亚稳态出现。支持数据的分割和数据拼接。...

C#利用HttpWebRequest,Stream,HttpWebResponse,StreamReader获取post返回的数据

C#利用HttpWebRequest,Stream,HttpWebResponse,StreamReader获取post返回的数据

C#中HttpWebRequest用Post提交Content-Type: multipart/form-data;

在C#中有HttpWebRequest类,可以很方便用来获取http请求,但是这个类对Post方式没有提供一个很方便的方法来获取数据。网上有很多人提供了解决方法,但都参差不齐,这里我把我使用的方法总结...

C#中HttpWebRequest用Post提交Content-Type: multipart/form-data; boundary=

在C#中有HttpWebRequest类,可以很方便用来获取http请求,但是这个类对Post方式没有提供一个很方便的方法来获取数据。网上有很多人提供了解决方法,但都参差不齐,这里我把我使用的方法总结...
  • flymorn
  • flymorn
  • 2011年09月12日 21:31
  • 14777

spring-data的学习笔记

  • 2017年11月06日 18:03
  • 129KB
  • 下载

Oracle Data Integrator學習筆記

  • 2009年10月13日 14:15
  • 798KB
  • 下载

Java8学习笔记之Stream API

摘要: 原创出处 http://peijie2016.oschina.io 欢迎转载,保留摘要,谢谢! Stream是Java8引入的一个重度使用lambda表达式的API。 Stream可以用流的...

Java菜鸟学习笔记--I/O篇(一):I/O Stream 简介

什么是IO? 在Java API 中,可以从某个地方读入一个字节序列的对象叫做输入流,可以向某个地方写入一个字节序列的对象叫输出流。某个 地方指的是來源地址或者目的地,一般都是文件,或者是网络连...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: C#学习笔记之六(stream, Asynchronous data read, HttpWebRequest
举报原因:
原因补充:

(最多只允许输入30个字)