
the quick brown fox jumped over the lazy dogthe quick brown fox jumped over the lazy dogthe quick brown fox jumped over the lazy dogthe quick brown fox jumped over the lazy dog
这是代码的输出 –
thehuick brown fox jumped over the lazy dog
以上结果不是我想要的.只更新了一行,其余的行不再在文件中找到.
这是我在C#中的完整代码
var txtfiles = Directory.Getfiles(@"E:\PROJ\replaceY\replaceY\","*.txt"); foreach (string currentfile in txtfiles) { string[] lines = file.ReadAlllines(currentfile); foreach (string line in lines) { var theString = line; var aStringBuilder = new StringBuilder(theString); aStringBuilder.Remove(3,2); aStringBuilder.Insert(3,"h"); theString = aStringBuilder.ToString(); using (StreamWriter outfile = new StreamWriter(currentfile)) { outfile.Write(theString.ToString()); } Console.Writeline(theString); Console.ReadKey(); } } 我哪里出错了?请帮忙!
解决方法 因为你的逻辑说:>为每个文件
>打开文件
>对于文件中的每一行
>处理它
>重新打开文件进行写入
>写下这一行
这意味着您反复使用最新行覆盖该文件.最后,每个文件只包含一行:最后一行.
你会想做这样的事情:
static voID Main(string[] args){ foreach ( string filename in args ) { string tempfilename = Path.GetTempfilename() ; using ( Stream tmpfile = file.Open( tempfilename,fileMode.OpenorCreate,fileAccess.Write,fileShare.None ) ) using ( StreamWriter output = new StreamWriter( tgtfile,EnCoding.Default ) ) using ( Stream srcfile = file.Open( filename,fileMode.Open,fileAccess.ReaDWrite,fileShare.None ) ) using ( StreamReader input = new StreamReader( srcfile,EnCoding.Default,true ) ) { string line ; while ( null != (line=input.Readline()) ) { output.Write( line.Substring(0,3) ) ; output.Write( 'h' ) ; output.Writeline( line.Substring(5) ) ; } } string backupfilename = string.Format( "{0}.{1:yyyy-MM-dd.HHmmss}.bak",filename,DateTime.Now ) ; file.Move( filename,backupfilename ) ; file.Move( tempfilename,filename ) ; file.Delete( backupfilename ) ; } return;} 您需要添加一些try / catch / finally异常处理来处理文件向南的情况,这样您就可以将该文件回滚到其原始状态.
其他选择是
>打开文件进行阅读.
>使用file.ReadAlllines()或等效文件覆盖整个内容
>根据需要变换线条
>重新打开原始文件进行写入
>将转换后的内容吐出到原始文件中.
这会带给你这样的东西:
static voID Main(string[] args){ foreach ( string filename in args ) { string[] lines = file.ReadAlllines( filename ) ; for ( int i = 0 ; i < lines.Length ; ++i ) { lines[i] = ApplytransformHere( lines[i] ) ; } file.Wri@R_502_6614@llines( filename,lines ) ; } return;} 总结 以上是内存溢出为你收集整理的c# – 替换第n个位置的字符全部内容,希望文章能够帮你解决c# – 替换第n个位置的字符所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)