如何在没有异常的情况下更快地执行文件操作

本文关键字:执行 操作 文件 情况下 异常 | 更新日期: 2023-09-27 18:15:14

我开发了一个应用程序来为我的项目执行一些后端文件操作。

应用程序将编写一个二进制文件,并在其中执行一些操作,从而创建另一个文件。然后我将读取输出文件以更新我的数据库。

例如,考虑我将编写一个ABC.bin文件,输出文件是XYZ.bin

上述所有操作将在10毫秒内完成。我会继续同样的过程很多次,例如100次。

现在,问题是我在从源代码运行应用程序时遇到了一些异常,比如找不到文件,访问被拒绝。

但在将应用程序制作为可执行文件(.exe(后,我不会得到同样的异常

这两种情况都发生了什么?为什么在将其作为可执行文件后,同样的事情没有发生?

如何在没有异常的情况下更快地执行文件操作

你能做的几件事:

  • 如果您只在调试器下看到异常,而不是在运行独立可执行文件时看到异常,请检查Visual Studio中的异常设置。转到Debug -> Exceptions ...并确保Thrown中的所有内容都未选中

  • 调查在开始复制之前使用file.exists方法查询文件是否存在是否会更快(这当然只是FileNotFoundException的解决方案(

  • 将复制循环包装在try-catch块中,而不是包装循环中的代码。像这样:

    List<string> fileNames = new List<string>() { "file1.txt", "file2.txt", ... };
    int i = 0;
    try
    {
        for (i = 0; i < fileNames.Count; i++)
            // do copying here
    }
    catch (Exception ex)
    {
      // log exception
    }
    // You can decide if to return to copying rest of the files here, from i+1
    

这一切都是为了避免为每个文件进入和退出try块,因为它有成本。