写文件时,操作StringWriter出现问题!

ofei 2006-08-06 02:18:35
翻开自己不少天前写过的小程序,完善了下。竟然出现了些小问题。
我的程序的其中的一个方法功能是把文本写入到一个StringWriter实例中,然后再将StringWriter实例中的文本写入到文件。
由于需要将StringWriter实例中的文本"value__"删除,导致写出来的文件有一小段文本有重复。
觉得很奇怪,不知道有没有人碰到这问题。

期望写出的文件的内容如下:

namespace System.IO
{
/// <summary><para> Defines constants used to specify the level of file access being requested.</para></summary>
[CLSCompliantAttribute(true)]
public enum FileAccess
{
/// <summary><para> Specifies read access for a file.</para></summary>
Read = 0x1,

/// <summary><para>
/// Specifies read and write access for a file.</para></summary>
ReadWrite = Read | Write
/// <summary><para> Specifies write access for
/// a file.</para></summary>
Write = 0x2

}
}
}

但是却输出如下:

namespace System.IO
{
/// <summary><para> Defines constants used to specify the level of file access being requested.</para></summary>
[CLSCompliantAttribute(true)]
public enum FileAccess
{
/// <summary><para> Specifies read access for a file.</para></summary>
Read = 0x1,

/// <summary><para>
/// Specifies read and write access for a file.</para></summary>
ReadWrite = Read | Write
/// <summary><para> Specifies write access for
/// a file.</para></summary>
Write = 0x2

}

/// a file.</para></summary>
Write = 0x2

}
}

重复文本如下:
/// a file.</para></summary>
Write = 0x2

其他不操作StringWriter(操作指将StringWriter实例中的文本"value__"删除)的文件正常。

写文件的代码片段如下:
FileStream fileWriter = new FileStream(createdTypeFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamWriter streamWriter = new StreamWriter(fileWriter, System.Text.Encoding.Default, 1024);
StringBuilder fileBuilder = new StringBuilder( );
StringWriter stringWriter = new StringWriter( fileBuilder );

//其他代码是往stringWriter里写入文本以及或替换文本

string fileContent = tempWriter.ToString( );
stringWriter.Close( );
stringWriter.Dispose( );
streamWriter.WriteLine( fileContent );
streamWriter.Close();
streamWriter.Dispose();
fileWriter.Close( );
fileWriter.Dispose( );
跟踪的时候stringWriter的内容符合期望,但写出来的文件就出了问题了。
...全文
471 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
coldice 2006-08-06
  • 打赏
  • 举报
回复
是不是你打开和写入的文件是同一个文件?

删除后,写入的内容长度小于原来的长度。。所以原来文件尾的那些文本依然存在,给你造成了重复的假象。试着在写入时,先清空原文件里面的内容。
Knight94 2006-08-06
  • 打赏
  • 举报
回复
进行如下检查:
1、如果文件已经存在,在写的时候,加上Truncate的FileMode标示。
2、查看写入的内容是否有重复。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧