FileStream将缓冲区写入文件

Box*_*iom 2 c# filestream streamwriter

我正在尝试通过将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();
Run Code Online (Sandbox Code Playgroud)

但是,即使在我的服务器上正确创建了文件,上载的文件也是空的.如果该文件已存在,它将正确上传该文件,但仅包含现有内容,而不包含我添加的其他文本someString.

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

我需要做些什么来确保在通过API上传数据之前将数据写入文件?

Jon*_*eet 5

你现在正在冲洗f,但不是s.你正在冲洗它FileStream,但它StreamWriter 包裹着它,所以它可以很容易地拥有自己的缓冲区.不要忘记,他们FileStream对此一无所知StreamWriter- 这种关系是相反的.

为什么您要上传的文件,你之前目前尚不清楚关闭StreamWriter,是诚实的.我会用:

File.WriteAllText(path, someString);
// Upload it now
Run Code Online (Sandbox Code Playgroud)

如果你一定要使用FileStreamStreamWriter,我强烈建议你使用using语句,而不是手动关闭的事情,太...