C# 使用c计算Zip文件中的文件数

C# 使用c计算Zip文件中的文件数,c#,tdd,zip,C#,Tdd,Zip,我正在生成一些.csv文件,我需要将其压缩到一个Zip文件中。好的,我有一个框架来做这件事,也许一切都会好起来 但是!正如TDD所说,在我做了一些测试之后,我就可以编写代码了 我的第一个测试听起来很简单,但是我在读取Zip文件时遇到了一些问题,有人知道一种简单的方法来计算我的Zip文件中的文件数吗?您似乎正在寻找类似的方法 编辑:例如: int count; using (ZipFile zip = ZipFile.Read(path)) count = zip.Count; 你好像在

我正在生成一些.csv文件,我需要将其压缩到一个Zip文件中。好的,我有一个框架来做这件事,也许一切都会好起来

但是!正如TDD所说,在我做了一些测试之后,我就可以编写代码了


我的第一个测试听起来很简单,但是我在读取Zip文件时遇到了一些问题,有人知道一种简单的方法来计算我的Zip文件中的文件数吗?

您似乎正在寻找类似的方法

编辑:例如:

int count;
using (ZipFile zip = ZipFile.Read(path))
    count = zip.Count;

你好像在找类似的东西

编辑:例如:

int count;
using (ZipFile zip = ZipFile.Read(path))
    count = zip.Count;

或者使用和

或者使用和

我不认为这是你问的TDD问题,但我会回答的

[Test] public void countsNumberOfFilesInZip() { var counter = new FileCounter("existing_archive_with_2_files.zip"); AssertEqual(2, counter.count()); }
现在,使用您选择的库,让FileCounter工作。一旦它工作并通过了测试,如果您愿意的话,重构代码,以便它使用模拟框架模拟对zip库的调用。现在,您对文件系统没有依赖性。我可能不会走这么远,除非你的测试因为磁盘I/O速度太慢,我不认为这是你问的TDD问题,但我还是会回答的

[Test] public void countsNumberOfFilesInZip() { var counter = new FileCounter("existing_archive_with_2_files.zip"); AssertEqual(2, counter.count()); }
现在,使用您选择的库,让FileCounter工作。一旦它工作并通过了测试,如果您愿意的话,重构代码,以便它使用模拟框架模拟对zip库的调用。现在,您对文件系统没有依赖性。我可能不会走这么远,除非你的测试因为磁盘I/O速度太慢

你能推荐一些使用DotNetZip的简单计数示例吗?你能推荐一些使用DotNetZip的简单计数示例吗?你说你有一个框架,我想这意味着一个zip库允许你创建zip文件。这不也是读取zip文件吗?如果是这样,那么您应该能够加载zip文件,然后直接获取计数,或者可能必须遍历虚拟目录结构以获取计数(如果有)。这将取决于您的库的实现。如果您没有图书馆,那么下面的其他人会为您命名一些:好克里斯!我的库是一些遗留代码,但最初我将在主项目中继续使用它。但在我的测试项目中,我想确认我的代码是否完全符合我的要求。我正在使用DotNetZip,很快我会发布我的代码。你说你有一个框架,我假设这意味着一个zip库,允许你创建zip文件。这不也是读取zip文件吗?如果是这样,那么您应该能够加载zip文件,然后直接获取计数,或者可能必须遍历虚拟目录结构以获取计数(如果有)。这将取决于您的库的实现。如果您没有图书馆,那么下面的其他人会为您命名一些:好克里斯!我的库是一些遗留代码,但最初我将在主项目中继续使用它。但在我的测试项目中,我想确认我的代码是否完全符合我的要求。我正在使用DotNetZip,很快我会发布我的代码。谢谢@bcarlso!我理解I/O的问题,但在这种情况下,我真的需要一些将文件保存在磁盘中的集成测试。我只是用mock从数据库中获取假数据。谢谢@bcarlso!我理解I/O的问题,但在这种情况下,我真的需要一些将文件保存在磁盘中的集成测试。我只是用mock从数据库中获取假数据。