使用 C# DotNetZip 在内存中提取 zip 文件失败

2024-01-11

我正在尝试下载并解压 C# 中的 zip 文件,特别是 DotNetZip。

当我运行这段代码时...

        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(reportUrl);
        HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
        Stream stream = response.GetResponseStream();
        MemoryStream ms = new MemoryStream();

        stream.CopyTo(ms);
        ms.Seek(0, 0);
        ZipInputStream zip = new ZipInputStream(ms);
        zip.Seek(0, 0);

        ZipEntry e = zip.GetNextEntry();
        string s = e.FileName;

        MemoryStream ms2 = new MemoryStream();
        e.Extract(ms2);

Extract 方法执行后,我得到...

        $exception  {"Object reference not set to an instance of an object."}   System.Exception {System.NullReferenceException}

有什么想法吗?谢谢!


很难说为什么你的代码不起作用。我首先会简化它并确保正确处置所有一次性资源,例如流:

class Program
{
    static void Main()
    {
        var url = "http://downloads.sourceforge.net/project/junit/junit/3.8.1/junit3.8.1.zip";
        using (var client = new WebClient())
        using (var zip = ZipFile.Read(client.DownloadData(url)))
        {
            foreach (var entry in zip)
            {
                entry.Extract(".");
            }        
        }
    }
}

确保您查看了文档许多有用的例子 http://cheeso.members.winisp.net/DotNetZipHelp/Examples.htm使用 DotNetZip 库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# DotNetZip 在内存中提取 zip 文件失败 的相关文章

  • Windows 8中有没有特殊的API来挂载ISO文件?

    您可能知道 Windows 资源管理器允许将 ISO 文件装载到虚拟驱动器 有没有任何API可以用来做到这一点 本机函数调用AttachVirtualDisk https msdn microsoft com en us library w
  • TFS API - 缓慢的 foreach 变更集迭代

    问题背景 我正在使用 TFS api 查询 TFS 服务器上的大范围 1 600 文件 我从每个文件中收集其所有 ChangesetId 然后将其收集在列表中 代码 这是我正在使用的代码 它可以正确生成 QueryHistory 方法中指定
  • C# 锁(mylocker) 不起作用

    我有很多 Web 服务调用 异步 在回调中 我会将结果绘制到 Excel 中 我想同步绘图方法 所以我使用以下内容 但是 从我在 Visual Studio 中追踪到 每次 lock locker 都会成功 并且有许多线程运行clearco
  • MigraDoc 项目符号列表(漏洞)

    在我的解决方案中 我在 PDF 文件中使用项目符号列表 它看起来像这样 Solcellepaneler kr ver hverken autoriseret service eller tidskr vende vedligehold So
  • 在 PHP 扩展中,推荐从 std::string 返回值的方法

    我们有一个简单的 PHP 函数 其目的是调用 C 自由函数std string callLibrary std string 并返回其std string返回值 目前看起来是这样的 PHP FUNCTION call library cha
  • 如何让BackgroundWorker返回一个对象

    我需要做RunWorkerAsync 返回一个List
  • 从 C++ 中的函数返回二维数组[重复]

    这个问题在这里已经有答案了 可能的重复 C 从函数返回多维数组 https stackoverflow com questions 3716595 c returning multidimension array from function
  • 获取不带波形符的泛型类名称[重复]

    这个问题在这里已经有答案了 我正在尝试获取类型名称T使用这个 typeof T Name 班级名称是ConfigSettings 而不是返回ConfigSettings它正在返回ConfigSettings 1 有什么具体原因吗 我怎样才能
  • “已经有一个与此命令关联的打开的 DataReader,必须先将其关闭。”

    我正在开发需要连接到另一个数据库以获取一些数据的应用程序 为此 我决定使用 SqlConnection reader 等 我需要执行一些查询 例如首先我需要获取某个用户的卡 ID 之后我需要通过该卡 ID 获取一些数据 这是我的代码 reg
  • 使用 c# 中的 c++ ref 中的引用从 C# 调用 C++ 代码错误

    所以在我的 c dll 文件中我得到了以下函数 DLL void GetUserPass char userName char passWord userName ceva passWord altceva 现在我想从 c 调用它 但它给了
  • 如何使用 Linq to Sql 修剪值?

    在数据库中 我有一个名为 联系人 的表 名字和其他此类字符串字段设计为使用 Char 数据类型 不是我的数据库设计 我的对象 Contact 映射到属性中的字符串类型 如果我想做一个简单的测试 通过 id 检索 Contact 对象 我会这
  • 在unity3D中显示数学方程

    我想使用它的 GUI 系统统一显示数学方程 有办法吗 我正在使用 C 语言在 Unity 中进行编程 如果我还可以使用 C 代码显示数学符号 这对我来说会很有用 谢谢 自 2016 年起 您可以使用TEXDraw https assetst
  • 如何使用 HttpClient 验证 Pardot API

    我花了大约一天的时间尝试对 Pardot API 进行身份验证 它不喜欢我尝试发布消息正文的方式 所以我想发布对我有用的解决方案 如果您有任何建议或替代方案 我想听听 ServicePointManager SecurityProtocol
  • 扩展一个类

    编辑回答 虽然我最初的问题并没有完全按照康拉德 鲁道夫提供的答案所解决的方式解释我的需求 但他 无意或有意 基本上为我写了我想写的内容 类本身不会被扩展 但通过使类了解新函数来扩展其功能 这些新函数允许它 类 处理更广泛的问题 我非常感谢您
  • cmake 包括其他目录中的 h 文件

    我在 cmake 项目下进行测试时遇到问题 我的项目是这样安排的 TerrainMap PointAccumulator heightQuadGrid Test 在 TerrainMap 目录中 CMakeLists txt 文件简单地概述
  • 如何在PropertyGrid中自定义绘制GridItem?

    我想以与所有者在 ListView 详细信息 和其他控件中绘制项目类似的方式在 PropertyGrid 中绘制属性值 如果将属性声明为 Color 类型 则其值将使用字符串描述旁边的颜色样本来绘制 如果属性是图像类型 则在字符串描述旁边绘
  • Sharepoint 的 CAML 查询中的日期时间比较

    我正在尝试从共享点列表中获取某些项目 具体取决于自定义列中的日期 我已经使用 U2U Caml Builder 创建了查询 这很有效 但是当我将其放入 Web 部件中自己的代码中时 它总是返回列表中的所有项目 这是我的代码 DateTime
  • 通过开源 PCL 使用 API 查看 3D 点云

    我使用 ToF 飞行时间 相机来获取 XYZ 格式的深度数据 为了实现 3D 点云的可视化目的 我想使用开源 PCL 提供的 API 网址为http pointclouds org documentation tutorials pcl v
  • 我可以创建一个 List> 吗?

    我正在尝试创建一个列表WeakReference使用 4 5 泛型实现 这样我就可以避免类型检查和转换WeakReference目标 但 WeakReference
  • C++11 中引入了哪些重大更改?

    我知道 C 11 中至少有一项更改会导致一些旧代码停止编译 引入explicit operator bool 在标准库中 替换旧实例operator void 诚然 这将破坏的代码可能是一开始就不应该有效的代码 但它仍然是一个破坏性的变化

随机推荐

  • 以最佳性能将数据插入 SQL Server

    我有一个大量使用数据库 SQL Server 的应用程序 因为它必须具有高性能 所以我想知道从执行时间的角度将记录插入 DB Fastest 的最快方法 我应该用什么 据我所知 最快的方法是创建存储过程并从代码 ADO NET 调用它 请让
  • 根据两个向量计算方向角?

    假设我有两个 2D 向量 一个用于对象的当前位置 一个用于该对象的先前位置 如何计算出行进的角度方向 这张图片可能有助于理解我所追求的 图片 http files me com james ingham crcvmy http files
  • 计算 SQL Server 中表的哈希值或校验和

    我正在尝试计算 SQL Server 2008 中整个表的校验和或哈希 我遇到的问题是该表包含 XML 列数据类型 校验和无法使用该数据类型 必须将其转换为 nvarchar第一的 所以我需要将其分解为两个问题 计算一行的校验和 模式在运行
  • 使用 Eclipse 运行时 rJava 错误

    我已经安装了 R 3 0 1 和 Eclipse Kepler 我已经安装了 StatE 来通过 Eclipse R 控制台运行 R 脚本 没有任何问题 但是 我似乎无法运行 java 程序 我发布我的问题是为了看看其他人是否遇到过这些问题
  • FindItems() 和 BindToItems() 为 EmailMessage.Sender.Address 提供不一致的结果

    经过大量调试后 我将复杂的托管 EWS 问题细化为以下两个简单的测试用例 第一个有效 第二个失败 var view new ItemView 100 PropertySet new PropertySet EmailMessageSchem
  • phpMyAdmin 在哪里存储 phpMyAdmin 用户密码?

    在设置 phpMyAdmin 的过程中 创建了一个 phpMyAdmin 用户 当我查看 phpMyAdmin 数据库权限时 我可以看到该用户 哪个 PHP 文件存储该用户的密码 保罗 不存在 phpMyAdmin 用户这样的东西 phpM
  • Android 菜单上的复选框项目状态

    如何设置菜单的复选框项目部分的初始值 当我启动一个活动时 我想设置一个保存在共享首选项中的布尔值 menu menu
  • 使用 If、ElseIf、ElseIf 比使用 If、If、If 更好吗?

    使用之间真的有什么区别吗 If this Else If that Else 或使用 If this If that Else 执行速度更快吗 编译器或架构有什么区别吗 两者的内容有很大的区别this 块和that 块可以both以第二种形
  • 如何在 VB.NET 中将接口属性设置为只读?

    这是我之前关于接口的问题的后续 我收到了我喜欢的答案 但我不确定如何在 VB NET 中实现它 上一个问题 该属性应该是我的对象接口的一部分吗 https stackoverflow com questions 239909 should
  • 无法安装 Elasticsearch-5.x 的 Search Guard 插件

    由于限制 我不被允许从互联网上安装任何软件包 所以 这个命令对我来说安装没有用搜查卫士 https github com floragunncom search guard bin elasticsearch plugin install
  • 如果没有导航控制器,抽屉布局将无法工作

    为什么我们无法在没有导航 导航控制器的情况下在 Android 中设置抽屉布局 每当我们想要设置抽屉时 我们都需要一个导航控制器 就像下面这样 private lateinit var drawerLayout DrawerLayout p
  • 将 Sublime Text 3 设置为 git commit 文本编辑器

    我在将 sublime 设置为 git 提交消息编辑器时遇到问题 Using git config global core editor subl 错误 错误 无法运行 subl 没有这样的文件或目录 错误 无法启动编辑器 subl 请使用
  • gatsby 和 graphql:过滤特定的单个图像

    我不太了解 graphql 或 gatsby 但我相信通过将其放入 gatsby config js 中 我的所有图像都会加载到 graphql 中 resolve gatsby source filesystem options name
  • 我应该使用哪种 API 将用户权限提升为 Mac OS X 中的超级用户?

    我想将我的应用程序的权限提升为超级用户 安装程序应用程序通过显示来支持这一点这个对话框 http en wikipedia org wiki File Mac OS X Authenticate png 如何显示此对话框以提升权限 附言 我
  • 如何在 Android N 中的时间选择器中获取 30 分钟间隔

    我想要得到30 min interval from time picker dialog下面的代码可以正常工作Android N但不适用于最新设备 下面是我的代码activity public class MainActivity exte
  • 获取mysql资源字符串的第一行?

    这是我的问题 我需要数据库中的多行 并且我需要第一行来执行某些任务 然后再次遍历所有列表以创建记录集 query SELECT FROM mytable result mysql query query firstrow extract f
  • 使用 SAX 解析器解析 html

    我正在尝试使用 SAX 解析器解析普通的 html 文件 SAXBuilder builder2 new SAXBuilder try Document sdoc Document builder2 build readFile NodeL
  • 使用for循环生成Html表

    请帮助解决以下提到的场景 gt 我想在表格中显示从 1 到 30 的值 这样 1 2 3 应该出现在一个标签中 同样 4 5 6 应该出现在其他 tr 标签中 依此类推 直到 30 值 我想使用表格来显示表格元素中的值 其中像 1 这样的每
  • 您如何将其从 Perl 转换为 Python?

    我有一个 Perl 函数 它接受时间戳并返回未更改的时间戳 如果以前从未见过 否则它会附加一些字母以使其唯一 sub uniqify my timestamp shift state last ts 1 state next letter
  • 使用 C# DotNetZip 在内存中提取 zip 文件失败

    我正在尝试下载并解压 C 中的 zip 文件 特别是 DotNetZip 当我运行这段代码时 HttpWebRequest webRequest HttpWebRequest WebRequest Create reportUrl Http