我正在尝试确定最坏情况下的磁盘速度,所以我编写了以下函数.
static public decimal MBytesPerSec(string volume)
{
string filename = volume + "\\writetest.tmp";
if (System.IO.File.Exists(filename))
System.IO.File.Delete(filename);
System.IO.StreamWriter file = new System.IO.StreamWriter(filename);
char[] data = new char[64000];
Stopwatch watch = new Stopwatch();
watch.Start();
int i = 0;
for (; i < 1000; i++)
{
file.Write(data);
if (watch.ElapsedMilliseconds > 2000)
{
break;
}
}
watch.Stop();
file.Close();
System.IO.File.Delete(volume + "\\test.txt");
decimal mbytessec = (i * 64 / watch.ElapsedMilliseconds);
return mbytessec;
}
Run Code Online (Sandbox Code Playgroud)
该函数工作正常,但写入缓存,因此速度不是最坏的情况.
在WIN32 C++中,我只需使用选项创建文件FILE_FLAG_NO_BUFFERING,FILE_FLAG_WRITE_THROUGH然后确保遵循非缓存写入规则(以扇区大小偏移写入文件,最少写入4k)
我遇到了一个显然以前遇到过的问题,尽管解决方案对我所看到的没有帮助。
我正在尝试根据 .csv 文件内容的 base 64 编码将数据写入文件Dictionary<string, object>。它应该是这样的:如果文件不存在,
DictionaryDictionary变成基64个数据步骤 1 到 3 工作正常。第 4 步似乎工作正常,直到您打开文件 - 当发现其中没有任何内容时。它被创建但没有写入,我最终得到一个空文件。
代码是这样的,其中 top 方法(CreateDefaultConfigFile如果文件不存在则调用):
private static void CreateDefaultConfigFile()
{
Console.WriteLine("AppConfig.CreateDefaultConfigFile");
File.Create(CONFIG_FILE_PATH);
Configuration.Clear();
Configuration.Add("ClientId", "5577");
Configuration.Add("RedirectUri", "https://stackexchange.com/oauth/login_success");
Configuration.Add("RequestKey", "2WQ5ksCzcYLeeYJ0qM4kHw((");
Save();
}
public static void Save()
{
Console.WriteLine("AppConfig.Save");
string data = "";
foreach (KeyValuePair<string, object> pair in Configuration)
{
Console.WriteLine(" {0}: {1}", pair.Key, pair.Value.ToString());
if (pair.Value.GetType() == typeof(string))
{
data += …Run Code Online (Sandbox Code Playgroud) 假设我创建一个名为'lotsofdata'的长字符串,然后使用以下代码输出其内容:
string outputFilePath = @"C:\output.txt";
System.IO.File.WriteAllText(outputFilePath, lotsofdata);
SpecialFunction1();
SpecialFunction2();
SpecialFunction3();
Run Code Online (Sandbox Code Playgroud)
我的问题是,在继续运行SpecialFunction1之前,计算机是否完全将所有内容写入output.txt?或者,它是否将输出过程设置为运动并在输出过程完成之前移至SpecialFunction1?
我问,因为我想确保在继续执行SpecialFunction1()之前写入output.txt,我不知道如何确保这一点.