1
我有以下文本内的文本文件:C#的StreamWriter写在当前的文本文件
[username][0]
我已经打开使用的StreamWriter文件,我想用StreamWriter.Write
方法来改变0
到1
。我怎样才能做到这一点?
我有以下文本内的文本文件:C#的StreamWriter写在当前的文本文件
[username][0]
我已经打开使用的StreamWriter文件,我想用StreamWriter.Write
方法来改变0
到1
。我怎样才能做到这一点?
如果你知道字符(S)的确切字节位置要覆盖,那么你可以做这样的事情:
using (var writer = new StreamWriter(filePath))
{
writer.BaseStream.Seek(bytePos, SeekOrigin.Begin);
writer.Write('1');
}
如果你不知道确切的字节位置,那么你可以做像这样:
using (var file = new FileStream(filePath, FileMode.Open))
using (var reader = new StreamReader(file))
using (var writer = new StreamWriter(file))
{
var openBracketCount = 0;
// Keep reading characters until the second open bracket is found.
do
{
var ch = Convert.ToChar(reader.Read());
if (ch == '[')
{
openBracketCount++;
}
} while (openBracketCount < 2);
writer.Write('1');
}
用'StreamWriter'改变流中间的一个字符有点痛苦,特别是如果你只能用'.Write' ...覆盖整个文件的一个选项吗? – 2014-10-29 05:48:23
这是否需要使用'StreamWriter'完成?使用'FileStream'查找文本,在该位置写入,然后关闭流。 – 2014-10-29 06:03:53
@SriramSakthivel,你可以做到这一点。一个'StreamWriter'确实写入一个'Stream',而一个'FileStream'。你甚至可以在同一个'FileStream'上创建一个'StreamReader'来找到正确的位置。 – jmcilhinney 2014-10-29 06:08:35