int n = 2; //需要合并的文件个数
FileStream fsOut = null;//输出文件 using (fsOut = new FileStream(FullPath, FileMode.Create, FileAccess.Write)) { int b; FileStream[] fsSource = new FileStream[n]; for(int i = 0; i < n; i++) { try { fsSource[i] = new FileStream(_Context.Server.MapPath("") + Paths[i], FileMode.Open); using(StreamReader sr = new StreamReader(fsSource[i],Encoding.UTF8,true)) { while((b = sr.Read()) != -1) { fsOut.WriteByte((byte)b); //文件合并 } } } catch(Exception){}
finally{
fsSource[i].close();
} } }
/*读取文件代码*/
上面是部分代码,已经可以将文件合并了,但是接下来我想把合并后的文件去掉空格和换行,在
/*读取文件代码*/
这一部分也用了一个StreamReader,结果抛出异常说文件已经被另一个进程使用。请问这一部分代码应该怎么操作呢,之前也用了using释放了资源。是不是还有更好的方法在合并文件的时候同时就能去掉换行和空格?
while ((b = fsSource[i].ReadByte()) != -1) { fsOut.WriteByte((byte)b); }
这是之前合并文件的代码,用的是ReadByte方法,但是生成的文件是BOM格式的,后来改用了StreamReader,如果不用StreamReader有没有方法生成无BOM格式的文件?
推荐使用 File.ReadAllText(), 合并只要把ReadAllText的内容加起来就行,替换直接Replace
用流读出来,然后再正则提换吧。