1
10
下面是一个快速win32包装的实现
用法
|
2
3
你能把所有文件放在同一个目录下吗?
如果是的话,你为什么不打个电话
如果您已经有了一个要删除的文件路径列表,那么通过将它们移动到临时目录,然后删除它们,而不是手动删除每个文件,实际上可能会得到更好的结果。 干杯, 弗洛里安 |
3
1
在一个单独的线程中执行,或者将消息发送到队列(可能 MSMQ ?)另一个应用程序(可能是Windows服务)订阅该队列并在其自己的进程中执行命令(即“delete e:\ dir*.txt”)。 邮件可能只包含文件夹名。如果你用类似的东西 NServiceBus 和事务性队列,然后您可以发布消息并在成功发布消息后立即返回。如果实际处理消息时出现问题,则它将重试并最终执行 error queue 你可以观察和执行维护。 |
4
1
有 超过1000个文件 在目录中是个大问题。 如果您现在正处于开发阶段,您应该考虑将 algo 它会将文件放入一个随机文件夹(在根文件夹中),并保证该文件夹中的文件数为 1024以下 。 有点像
执行此操作时,还要确保每次创建文件时,都将其同时添加到哈希映射或列表中(路径)。周期性地使用类似于 JSON.net 文件系统(为了完整性起见,这样即使服务失败,您也可以从序列化表单中获取文件列表)。
当你想清理文件或查询它们时,
首先查找此哈希映射
或列出,然后
按文件办事。这比
|
5
0
将工作启动到工作线程,然后将您的响应返回给用户。 我会标记一个应用程序变量,表示您正在执行“大删除作业”,以停止运行多个执行相同工作的线程。然后,您可以轮询另一个页面,如果您愿意的话,该页面还可以为您提供到目前为止删除的文件数量的进度更新? 只是一个查询,但为什么有这么多文件? |
6
0
您可以在aspx代码中创建一个简单的ajax webmethod并用javascript调用它。 |
7
0
最好的选择(imho)是创建一个单独的进程来删除/计数文件,并通过轮询检查进程,否则您可能会遇到浏览器超时的问题。 |
8
0
真的。我认为你肯定是在正确的轨道上有一些其他服务或实体负责删除。这样,您还可以提供跟踪删除过程的方法,并使用asynch javascript向用户显示结果。 正如其他人所说,把这个过程放到另一个过程中是一个好主意。您不希望IIS使用如此长时间运行的作业占用资源。这样做的另一个原因是安全。您可能不想让您的工作进程能够从磁盘中删除文件。 |
9
0
我知道这是老生常谈,但除了jan jongboom的答案之外,我还提出了类似的解决方案,这是一个性能很好、更通用的解决方案。我的解决方案旨在快速删除dfs中的目录结构,并支持长文件名(>255个字符)。
第一个区别是在dll导入声明中。
win32_find_数据结构也略有不同:
为了使用长路径,路径需要准备如下:
主要方法如下:
当然,我们可以更进一步,将目录存储在该方法之外的单独列表中,然后在另一个方法中删除它们,该方法可能如下所示:
|
10
0
在后端加快速度的一些改进:
它应该更快,但显然http请求仍然是超时的,文件数量很大,因此后端进程应该在单独的工作线程中执行,并在完成后将结果通知给web客户端。 |
Tristan · 如何在写入数据后打开txt文件? 6 年前 |
Adam Hanek · 从命令创建文件夹并打印到文本文件 6 年前 |
SoSo · 如何打开具有部分名称的文件并在c#[关闭]中读取其行 6 年前 |
O. Schultz · 如何逐行提取特定关键字,然后声明为变量 6 年前 |
thatsHeavyDoc · 缓冲区清除-输出不符合预期 6 年前 |