public virtual Stream RetrieveResourceAsInputStream(String src) { byte[] bytes = RetrieveBytesFromBase64Src(src); if (bytes != null) { return new MemoryStream(bytes); } try { Uri url = uriResolver.ResolveAgainstBaseUri(src); return retriever.GetInputStreamByUrl(url); } catch (Exception e) { logger.LogError(e, MessageFormatUtil.Format(iText.StyledXmlParser.Logs.StyledXmlParserLogMessageConstant.UNABLE_TO_RETRIEVE_STREAM_WITH_GIVEN_BASE_URI , uriResolver.GetBaseUri(), src)); return null; } }
时间: 2024-02-10 13:31:06 浏览: 118
还在用if(obj!=null)做非空判断,带你快速上手Optional
这段C#代码实现了一个方法 `RetrieveResourceAsInputStream`,这个方法接收一个字符串参数 `src`,返回一个 `Stream` 对象。方法的作用是根据传入的 `src` 参数,获取一个 `Stream` 对象。
首先,这个方法调用 `RetrieveBytesFromBase64Src` 方法,将 `src` 参数作为 Base64 字符串进行解码,得到一个字节数组 `bytes`。如果解码成功,则将字节数组 `bytes` 转换为 `MemoryStream` 对象并返回。
如果 `RetrieveBytesFromBase64Src` 方法返回空,则使用 `uriResolver` 对象解析 `src` 参数,得到一个 `Uri` 对象 `url`。然后,调用 `retriever` 对象的 `GetInputStreamByUrl` 方法,传入 `url` 参数,获取一个 `Stream` 对象并返回。
如果在解析或获取 `Stream` 对象的过程中出现异常,则记录日志并返回空。
阅读全文