保存具有相同名称的多个文件

斯巴达93

我正在使用C#WPF应用程序,该应用程序执行一些数据处理并以.csv格式输出文件我想要实现的是,每次我的程序运行时,它都会生成一个test.csv输出文件,但是当我再次使用新数据运行时,新的结果文件将覆盖旧的文件。因此,我正在尝试做一些事情,以使每个创建的文件名都是唯一的。例如,,test.csv然后test1.csvtest2.csv等等。我想出了以下代码段,但我认为逻辑不正确,因此我不知道该怎么做。任何帮助将不胜感激!

filename = "C:\\test.csv";
if (File.Exists(filename))
{
    int count = 0;
    for (int i = 0; i < 10; i++)
    {    
        filename = "C:\\test" + count + ".csv";
        count++;
    }
}
matan129

在原始代码中,只执行一次检查。试试(注意while):

filename = "C:\\test.csv";
int count = 0;

while (File.Exists(filename))
{
    count++;
    filename = "C:\\test" + count + ".csv";                            
}

//save file goes here

如果愿意,可以while使用以下for循环替换

for(int count = 0; File.Exists(filename); count++)
    filename = "C:\\test" + count + ".csv";                            

更新:@eFloh所示(请参阅注释),当上述代码的两个实例同时工作时,可能会出现问题。

这是因为循环和实际的写磁盘操作之间有一个小窗口,因此其他进程可能只是进入中间并以相同的名称写入文件,从而覆盖了另一个程序正在创建的文件或导致错误。

一种可能的解决方案是在循环执行时(并且停止执行该文件)将特殊文件写入目录,以确保没有两个正在运行的实例发生冲突。

本质上,此文件将向程序发出信号,表明另一个程序正在执行此循环-因此,另一个程序应等待,直到另一个程序终止。

下面的代码解释:using块正在尝试创建lock_file目录中的文件。

  • 这样FileMode.OpenOrCreate就可以打开文件(如果已经存在)或创建文件(如果不存在)。
  • FileAccess.Writemake可以写lock_file
  • FileShare.Read使得使用等待的,直到交了罚款,关闭其他进程-所以在需要时程序将等待。
  • 最后,FileOptions.DeleteOnClose使using块删除lock_file出口。这是非常重要的,因为否则,lock_file它将永久保留在那里,从而使该块永远等待删除该文件。

总结一下(同样,这部分的功劳归@eFloh):

using(new FileStream("C:\\lock_file", FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read, 4096, FileOptions.DeleteOnClose))
{
    //loop and saving goes here
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Eclipse中导入具有相同名称的多个项目

来自分类Dev

Scala:具有相同名称的多个隐式转换

来自分类Dev

Python zipfile模块创建具有相同名称的多个文件

来自分类Dev

如何使用jquery或javascript获取具有相同名称属性的多个文件的值?

来自分类Dev

使用XSLT显示具有相同名称的多个属性

来自分类Dev

XSD具有相同名称但类型不同的多个元素

来自分类Dev

在Linux中创建多个具有相同名称的文件

来自分类Dev

如何在ExtractTemporaryFile中使用多个具有相同名称的文件?

来自分类Dev

具有相同名称,域和路径的多个Cookie?

来自分类Dev

具有相同名称的多个参数

来自分类Dev

保存具有相同名称的多个文件

来自分类Dev

在MVC中处理具有相同名称的多个动作

来自分类Dev

程序将保存文件,但不会删除具有相同名称的旧文件

来自分类Dev

是否有功能在python中保存多个具有不同名称的csv文件?

来自分类Dev

Ansible在XML文件中编辑具有相同名称的多个属性

来自分类Dev

具有相同名称的多个文件-区分它们以进行检索的最佳方法是什么

来自分类Dev

具有相同名称的多个div

来自分类Dev

目录中可以有多个具有相同名称的文件/目录吗?

来自分类Dev

VS2005-同一项目中多个具有相同名称的文件

来自分类Dev

JAXB将具有相同名称空间的多个文件绑定到同一包

来自分类Dev

在Linux中创建具有相同名称的多个文件

来自分类Dev

压缩具有相同名称但扩展名不同的多个文件

来自分类Dev

bash-复制具有相同名称的多个文件

来自分类Dev

具有相同名称的多个输入

来自分类Dev

cp文件到具有相同名称的文件的目录

来自分类Dev

包验收验证错误:包包含多个具有相同名称的文件

来自分类Dev

如何在 ASP.NET MVC 中保存多个具有相同名称属性的数据?

来自分类Dev

具有多个具有相同名称的字段的 POST

来自分类Dev

将多个文件移动到具有相同名称的不同文件夹

Related 相关文章

  1. 1

    在Eclipse中导入具有相同名称的多个项目

  2. 2

    Scala:具有相同名称的多个隐式转换

  3. 3

    Python zipfile模块创建具有相同名称的多个文件

  4. 4

    如何使用jquery或javascript获取具有相同名称属性的多个文件的值?

  5. 5

    使用XSLT显示具有相同名称的多个属性

  6. 6

    XSD具有相同名称但类型不同的多个元素

  7. 7

    在Linux中创建多个具有相同名称的文件

  8. 8

    如何在ExtractTemporaryFile中使用多个具有相同名称的文件?

  9. 9

    具有相同名称,域和路径的多个Cookie?

  10. 10

    具有相同名称的多个参数

  11. 11

    保存具有相同名称的多个文件

  12. 12

    在MVC中处理具有相同名称的多个动作

  13. 13

    程序将保存文件,但不会删除具有相同名称的旧文件

  14. 14

    是否有功能在python中保存多个具有不同名称的csv文件?

  15. 15

    Ansible在XML文件中编辑具有相同名称的多个属性

  16. 16

    具有相同名称的多个文件-区分它们以进行检索的最佳方法是什么

  17. 17

    具有相同名称的多个div

  18. 18

    目录中可以有多个具有相同名称的文件/目录吗?

  19. 19

    VS2005-同一项目中多个具有相同名称的文件

  20. 20

    JAXB将具有相同名称空间的多个文件绑定到同一包

  21. 21

    在Linux中创建具有相同名称的多个文件

  22. 22

    压缩具有相同名称但扩展名不同的多个文件

  23. 23

    bash-复制具有相同名称的多个文件

  24. 24

    具有相同名称的多个输入

  25. 25

    cp文件到具有相同名称的文件的目录

  26. 26

    包验收验证错误:包包含多个具有相同名称的文件

  27. 27

    如何在 ASP.NET MVC 中保存多个具有相同名称属性的数据?

  28. 28

    具有多个具有相同名称的字段的 POST

  29. 29

    将多个文件移动到具有相同名称的不同文件夹

热门标签

归档