流通过System.IO.Stream类表示.
System.IO.FileStream允许将文件作为流访问;
System.IO.MemoryStream允许将内存块作为流进行访问;…………
托管和非托管的应用程序最常使用的IO形式是文件IO。托管应用程序读写文件的一般步骤如下
1、用FileStream对象打开文件
2、进行二进制读写操作,在FileStream对象周围包装BinaryReader和BinaryWriter的实例,并调用BinaryReader和BinaryWriter方法执行输入
输出。
3、要读写文本,在FileStream对象的周围包装一个StreamReader和StreamWriter,然后使用StreamReader和StreamWriter方法完成输入输出。
4、关闭FileStream对象。
下面是一个简单的文本文件读操作
using System;
using System.IO;
class FileTest
{
static void Main(string [] args)
{
string filename="testfile.txt";
//打开文件并显示其内容
StreamReader reader=null;
try
{
reader=new StreamReader(filename);
for(string line=reader.ReadLine();line!=null;line=reader.ReadLine())
Console.WriteLine(line);
}
catch(IOException e)
{
Console.WriteLine(e.Message);
}
finally
{
if(reader!=null)
reader.Close();
}
}
}
/**
* FCL是一个非常丰富的类库,所以还有许多打开文件并进行读取的方法,比如
* 1.用File.open创建一个FileStream,并围绕它包装一个StreamReader
* FileStream stream=File.Open(filename,FileMode.Open,FileAccess.Read);
* StreamReader reader=new StreamReaderaa(stream);
* 2.使用File.OpenText,在一步内创建一个FileStream和一个StreamReader
* StreamReader reader=File.OpenText(filename);
* 当然,还有其他的方法
* 若要对文本进行写入操作,可以使用StreamWriter
*/
其中的异常处理是为了防止意外的事情发生,如传递给StreamReader的构造函数的文件名非法,或者在执行raeder.Close();前匡架引发异常等
protected void Button1_Click( object sender, EventArgs e)
{
// 源码是替换掉模板中的特征字符
string mbPath = Server.MapPath( " template.htm " );
Encoding code = Encoding.GetEncoding( " gb2312 " );
StreamReader sr = null ;
StreamWriter sw = null ;
string str = null ;
// 读取
try
{
sr = new StreamReader(mbPath, code);
str = sr.ReadToEnd();
}
catch (Exception ex)
{
throw ex;
}
finally
{
sr.Close();
}
// 根据时间自动重命名,扩展名也可以自行修改
string fileName = DateTime.Now.ToString( " yyyyMMddHHmmss " ) + " .htm " ;
str = str.Replace( " $title$ " , txtTitle.Text); // 替换Title
str = str.Replace( " $content$ " , txtContent.Text); // 替换content
// 生成静态文件
try
{
sw = new StreamWriter(Server.MapPath( " htm/ " ) + fileName, false , code);
sw.Write(str);
sw.Flush();
}
catch (Exception ex)
{
throw ex;
}
finally
{
sw.Close();
Response.Write( " 恭喜<a href=htm/ " + fileName + " target=_blank> " + fileName + " </a>已经生成,保存在htm文件夹下! " );
}
}
根据Url地址生成静态页保持
protected void Button2_Click( object sender, EventArgs e)
{
Encoding code = Encoding.GetEncoding( " utf-8 " );
StreamReader sr = null ;
StreamWriter sw = null ;
string str = null ;
// 读取远程路径
WebRequest temp = WebRequest.Create(txtUrl.Text.Trim());
WebResponse myTemp = temp.GetResponse();
sr = new StreamReader(myTemp.GetResponseStream(), code);
// 读取
try
{
sr = new StreamReader(myTemp.GetResponseStream(), code);
str = sr.ReadToEnd();
}
catch (Exception ex)
{
throw ex;
}
finally
{
sr.Close();
}
string fileName = DateTime.Now.ToString( " yyyyMMddHHmmss " ) + " .htm " ;
// 写入
try
{
sw = new StreamWriter(Server.MapPath( " htm/ " ) + fileName, false , code);
sw.Write(str);
sw.Flush();
}
catch (Exception ex)
{
throw ex;
}
finally
{
sw.Close();
Response.Write( " 恭喜<a href=htm/ " + fileName + " target=_blank> " + fileName + " </a>已经生成,保存在htm文件夹下! " );
}