托管和非托管的应用程序最常使用的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();
}
}
}
我们来看文件合并操作
class FileCombine
{
public void CombineFile(String[] infileName,String outfileName)
{
int b;
int n=infileName.Length;
FileStream[] fileIn=new FileStream[n];
using (FileStream fileOut = new FileStream(outfileName, FileMode.Create))
{
for (int i = 0; i < n; i++)
{
try
{
fileIn[i] = new FileStream(infileName[i], FileMode.Open);
while ((b = fileIn[i].ReadByte()) != -1)
fileOut.WriteByte((byte)b);
}
catch (System.Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
fileIn[i].Close();
}
}
}
}
}调用方法如下:
class TestCombine
{
public static void Main(String[] args)
{
FileCombine c=new FileCombine();
String[] file=new String[2];
file[0]="aa.txt";
file[1]="bb.txt";
c.CombineFile(file,"cc.txt");
}
}/**
* 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
*/生成静态页面文件
根据Url地址生成静态页保持
//根据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("恭喜" + fileName + "已经生成,保存在htm文件夹下!");
}