FileStream 将缓冲区写入文件
FileStream writing buffer to file
我正在尝试通过将文件作为参数的 API 上传 .srt 文件。
文件存储在服务器上,我正在使用 FileStream
和 StreamWriter
写入:
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
包装 ,因此它可以轻松拥有自己的缓冲区。不要忘记 FileStream
对 StreamWriter
一无所知 - 这种关系是相反的。
老实说,不清楚为什么要在 关闭 StreamWriter
之前上传文件。我只会使用:
File.WriteAllText(path, someString);
// Upload it now
如果你做肯定想使用FileStream
和StreamWriter
,我强烈建议你使用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
}
}
我正在尝试通过将文件作为参数的 API 上传 .srt 文件。
文件存储在服务器上,我正在使用 FileStream
和 StreamWriter
写入:
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
包装 ,因此它可以轻松拥有自己的缓冲区。不要忘记 FileStream
对 StreamWriter
一无所知 - 这种关系是相反的。
老实说,不清楚为什么要在 关闭 StreamWriter
之前上传文件。我只会使用:
File.WriteAllText(path, someString);
// Upload it now
如果你做肯定想使用FileStream
和StreamWriter
,我强烈建议你使用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
}
}