我遇到了以下问题。我正在使用.NET Framework 1.1,我正在尝试使用以下代码覆盖文件:
try
{
using (StringWriter writer = new StringWriter())
{
Server.Execute(path, writer);
using (StreamWriter sr = File.CreateText(filepath + fileName))
{
sr.WriteLine(writer.ToString());
}
}
}
catch (Exception exc)
{
...
}
有时它工作正常,但有时它不会覆盖文件,也不会抛出任何异常。有人可以告诉我问题是什么或如何处理它为什么不覆盖文件?
答案 0 :(得分:7)
为什么不呢:
File.WriteAllText(Path.Combine(filepath, fileName), writer.ToString())
来自MSDN: 创建一个新文件,将指定的字符串写入该文件,然后关闭该文件。如果目标文件已存在,则会被覆盖。
答案 1 :(得分:2)
有人能告诉我问题是什么或如何处理它的原因 没有覆盖文件?
嗯,为了回答您的实际问题,File.CreateText(string file)
的行为完全符合预期。如果filepath + fileName
使用您的示例,是一个已存在的文件,它会打开文件而不是创建它。 (它不会覆盖)。
您可以先使用File.Exists(string file)
然后File.Delete(string file)
检查文件是否存在。
如果File.CreateText(string file)
不适合您的需求,您可以尝试其他类型。也许FileInfo
?
微软表示:
创建或打开用于编写UTF-8编码文本的文件。
来源:https://msdn.microsoft.com/en-us/library/system.io.file.createtext%28v=vs.110%29.aspx
答案 2 :(得分:0)
over write。
File.copy有重载 -
File.Copy Method (Source, Destination, OverWrite)
的更多信息
希望这会有所帮助。