gpt4 book ai didi

C# 使用从 FileStream 创建的 StreamWriter 移动到文件末尾

转载 作者:行者123 更新时间:2023-11-30 14:27:08 25 4
gpt4 key购买 nike

我需要从 FileStream 对象创建一个 StreamWriter 并将一些文本附加到文件。假定正在使用的 FileStream 对象是使用 FileMode.OpenOrCreate 和 FileAccess.ReadWrite 创建的。我有:

using (FileStream fs = GetCurrentFileStream())
{
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("StringToAppend");
sw.Flush();
}

然而,这只是从头开始覆盖文件。如何移动到文件末尾?在创建 FileStream 后,是否有办法将 FileMode 更改为 Append 并将 FileAccess 更改为 Write?

编辑:如上所述,我需要使用 FileStream 对象来执行此操作。 Open existing file, append a single line的答案假设我可以从我没有的文件路径创建一个新的 StreamWriter。

编辑 2:添加了 GetCurrentFileStream() 的截断版本。

    public static FileStream GetCurrentFileStream()
{
String fileName = getFileName();
FileStream fs = OpenFileWhenAvailable(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
}

public static FileStream OpenFileWhenAvailable(String fileName, FileMode fileMode, FileAccess fileAccess, FileShare fileShare)
{
int tries = 0;
int timeout = 10 * 1000;
while (true)
{
tries++;
try
{
return new FileStream(fileName, fileMode, fileAccess, fileShare);
}
catch (IOException ex)
{
if (tries * 100 > timeout)
{
return null;
}
else
{
System.Threading.Thread.Sleep(100);
}
}
}
}

GetCurrentFileStream 在几个不同的上下文中使用,因此不能直接更改 FileMode 和 FileAccess。我不希望只为这种情况制作一个单独的 GetCurrentFileStream 版本,这就是为什么我要问是否有一种方法可以跳转到流的末尾并在已创建 FileStream 对象时附加一个字符串。

最佳答案

如果我没理解错的话,你想将你的行附加到创建的文件中:

using (FileStream fs = GetCurrentFileStream())
{
StreamWriter sw = new StreamWriter(fs, true);
sw.WriteLine("StringToAppend");
sw.Flush();
}

通过重载 StreamWriter 构造函数,您可以选择是追加文件还是覆盖文件。

如果您展示方法 GetCurrentStream() 的实现,那将非常酷:

using (FileStream fileStream = new FileStream(fileName,FileMode.Append, FileAccess.Write))
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(something);
}

更新:

using (FileStream fs = GetCurrentFileStream())
{
StreamWriter sw = new StreamWriter(fs);
long endPoint=fs.Length;
// Set the stream position to the end of the file.
fs.Seek(endPoint, SeekOrigin.Begin);
sw.WriteLine("StringToAppend");
sw.Flush();
}

关于C# 使用从 FileStream 创建的 StreamWriter 移动到文件末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33671428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com