柳暗花明又一村 - C#中对文件进行的操作

本文介绍了使用C#动态生成.aspx.cs文本文件的工作。根据用户设置不同生成不同文件,范例代码中有需更改区域。起初使用StreamWriter和FileStream类操作文件遇难题,后将文件内容读入String对象,利用其强大的字符串操作功能解决问题,完成文件修改。
    今天的工作就是动态生成一个文件,根据用户设置的不同,生成的文件也不同。其实要生成的文件是一个文本文件,文本内容是.aspx.cs的代码。
    已经为文件写好了一个范例,并且把一些需用户设置的值当作变量,放在了需要更改的区域,用户修改之后,只需要把这些变量的值更改一下即可。
      
    范例代码剪切:
   
None.gif        protected System.Web.UI.WebControls.Button BTSearch;
None.gif        
protected System.Web.UI.WebControls.TextBox TBSearch;
None.gif        
protected System.Web.UI.WebControls.DropDownList Community;
None.gif
None.gif        
None.gif
//以下就是需更改的区域
None.gif        
//--Begin--
None.gif
        protected string pageid="10";
None.gif        
protected string tablename="LJF";
None.gif        
protected ArrayList al=new ArrayList();
None.gif
None.gif        
protected void SetArrayList()
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            al.Clear();
InBlock.gif            al.Add(
"居委会名称");
InBlock.gif            al.Add(
"垃圾房位置");
ExpandedBlockEnd.gif        }

None.gif        
//--End--
None.gif

None.gif        
protected void CheckDelete(object sender,System.EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            ((LinkButton)sender).Attributes.Add(
"onclick","return IsDelete();");
ExpandedBlockEnd.gif        }

需更改的地方,以//--Begin开始,以//--End--结束。

但是,很麻烦,找帮助找了几个小时,发现在C#中StreamWriter类,FileStream类好像只支持简单的对文件进行写入,读出工作。要把中间那一段需修改的字符串抽取出来,修改后,再保存回该文件,我没办到!

后来,找到了一个解决办法,就是,把文件全部读出来,放到String对象中去,String类中对字符串的操作可强多了。以下是解决的代码:
None.gif            string path=@"D:\browser.aspx.cs";
None.gif            StreamReader sr 
= new StreamReader(path,Encoding.Default); //把文件读到流中
None.gif
            string allstr = sr.ReadToEnd(); //文件中的内容放入String对象allstr中
None.gif
            sr.Close();
None.gif
None.gif            
//下面先把文件分割出来,然后填入相应的设置的变量进去,最后进行整合。
None.gif            
//剥离文件--头部分
None.gif
            int begin=allstr.IndexOf("//--Begin--")+11;
None.gif            
string strBegin = allstr.Substring(0,begin);
None.gif            
None.gif            
//剥离文件--尾部分
None.gif
            int end = allstr.IndexOf("//--End--");
None.gif            
string strEnd = allstr.Remove(0,end);
None.gif            
None.gif            
//设置后缀代码中需修改变量的值
None.gif
            string strmodify="protected string pageid=\""+spageid+"\";\n";
None.gif            strmodify
=strmodify+"protected string tablename=\""+stablename+"\";\n";
None.gif            strmodify
=strmodify+"protected ArrayList al=new ArrayList();\n";
None.gif            strmodify
=strmodify+"protected void SetArrayList()\n";
None.gif            strmodify
=strmodify+"{ al.Clear();\n";
None.gif
None.gif            
string strmodify2="";
None.gif            
for(int i=0;i<sserach.Count;i++)
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif{
InBlock.gif                strmodify2
=strmodify2+"al.Add(\""+sserach[i].ToString()+"\");\n";
ExpandedBlockEnd.gif            }

None.gif            
None.gif            strmodify
=strmodify+strmodify2;
None.gif
None.gif            strmodify
=strmodify+"}\n";
None.gif
None.gif            
//再把修改后的文件保存
None.gif
            
None.gif            StreamWriter sw 
= File.CreateText(sfolder+"\browser.aspx.cs");
None.gif            sw.Write(strBegin
+strmodify+strEnd); //头部分+修改后的文本+尾部分=修改后的代码
None.gif
            sw.Close();


至此,棘手的问题解决,Happy~~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值