FileStream 将缓冲区写入文件

FileStream writing buffer to file

我正在尝试通过将文件作为参数的 API 上传 .srt 文件。

文件存储在服务器上,我正在使用 FileStreamStreamWriter 写入:

string path = Server.MapPath("~/App_Data/captions/" + entryId) + ".srt";
FileStream f = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamWriter s = new StreamWriter(f);

s.Write(someString);
f.Flush()

// Connecting to API and uploading the file

s.Close();

但是,即使在我的服务器上正确创建了文件,上传的文件还是空的。如果文件已经存在,它会正确上传该文件,但只包含现有内容,而不是我从 someString.

添加的附加文本

我以为f.Flush()会确保StreamWriter中的数据写入并保存到文件中,但似乎并非如此。

我必须做什么才能确保数据在通过 API 上传之前写入文件?

您目前正在冲水 f,但没有冲水 s。您正在刷新 FileStream,但 StreamWriter 包装 ,因此它可以轻松拥有自己的缓冲区。不要忘记 FileStreamStreamWriter 一无所知 - 这种关系是相反的。

老实说,不清楚为什么要在 关闭 StreamWriter 之前上传文件。我只会使用:

File.WriteAllText(path, someString);
// Upload it now

如果你肯定想使用FileStreamStreamWriter,我强烈建议你使用using语句而不是也手动关闭东西...

也试试这个。

 string path = Server.MapPath("~/App_Data/captions/" + entryId) + ".srt";
            using (FileStream f = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                using (StreamWriter s = new StreamWriter(f))
                {
                    s.Write("someString");
                    f.Flush();
                    // Connecting to API and uploading the file
                }
            }