相关疑难解决方法(0)

如何在C#winform app中进行非缓存文件写入

我正在尝试确定最坏情况下的磁盘速度,所以我编写了以下函数.

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)

我发现了一篇讨论.NET技术的文章. …

.net c# file winforms

13
推荐指数
1
解决办法
5030
查看次数

为什么 File.WriteAllText 不将数据写入文件?

我遇到了一个显然以前遇到过的问题,尽管解决方案对我所看到的没有帮助。

我正在尝试根据 .csv 文件内容的 base 64 编码将数据写入文件Dictionary<string, object>。它应该是这样的:如果文件不存在,

  1. 它被创建
  2. 一些默认值被添加到 Dictionary
  3. Dictionary变成基64个数据
  4. 数据写入文件

步骤 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)

c# io dictionary file

2
推荐指数
1
解决办法
4719
查看次数

在我的C#代码中,计算机是否一直等到输出完成后再继续?

假设我创建一个名为'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,我不知道如何确保这一点.

c# io

1
推荐指数
3
解决办法
1830
查看次数

标签 统计

c# ×3

file ×2

io ×2

.net ×1

dictionary ×1

winforms ×1