问题标签 [memorystream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8704 浏览

.net - 如何将 MemoryStream 中的 PDF 发送到 .Net 中的打印机?

我有一个使用 iTextSharp 在内存中创建并包含在 MemoryStream 中的 PDF。我现在需要将 MemoryStream PDF 翻译成打印机可以理解的内容。

我过去曾使用 Report Server 将页面呈现为打印机格式,但我无法将其用于此项目。

有没有一种原生的.Net方式来做到这一点?例如,如果 GhostScript 是一个 .Net 程序集,它就可以了,但我不想将任何非 .Net 的东西与我的安装程序捆绑在一起。

.Net 中的 PrintDocument 类非常适合将内容发送到打印机,但我仍然需要在页面级别将其从 PDF 流转换为 GDI。

有什么好的提示吗?

提前致谢

瑞安

0 投票
2 回答
8461 浏览

c# - C# 到 Java:Base64String、MemoryStream、GZipStream

我有一个已在 .NET 中压缩的 Base64 字符串,我想将其转换回 Java 中的字符串。我正在寻找 C# 语法的一些 Java 等价物,特别是:

  • Convert.FromBase64String
  • 记忆流
  • GZipStream

这是我想转换的方法:

任何指针表示赞赏。

0 投票
4 回答
2960 浏览

c# - 在 C# 中从内存流中读取的注意事项

我最近看到了这个网页http://www.yoda.arachsys.com/csharp/readbinary.html ,它解释了从文件流中读取时要采取的预防措施。它的要点是以下代码并不总是有效:

这是危险的,因为 Read 的第三个参数是要读取的最大字节数,您应该使用 Read 的返回值来检查实际读取了多少。

我的问题是,在从内存流中读取数据时,您是否应该采取同样的预防措施?在哪些情况下 Read 可能会在读取所有字节之前返回?

0 投票
2 回答
204 浏览

encryption - SevenZip,许多尾随 0

我的数组是 140 字节。outArray 是 512 字节...不是我想要的。另外我不知道我是否正确加密。下面的代码是否正确?我该如何解决这个问题,所以 outArray 是真实大小,而不是用许多尾随零固定?

0 投票
5 回答
5291 浏览

c# - 内存中是否存在像文件流一样阻塞的流

我正在使用一个库,该库需要我提供一个实现此接口的对象:

该对象的读者然后被图书馆使用:

通常,实现 IConsole 的类具有来自外部进程的 StandardOutput 流。在这种情况下,console.StandardOutput.Read 调用通过阻塞工作,直到有一些数据写入 StandardOutput 流。

我正在尝试做的是创建一个测试IConsole 实现,它使用MemoryStreams 并将StandardInput 上出现的任何内容回显到StandardInput。我试过:

但问题在于 console.StandardOutput.Read 将返回 0 而不是阻塞,直到有一些数据。如果没有可用数据或者我可以使用不同的内存流,我是否可以让 MemoryStream 阻塞?

0 投票
1 回答
2814 浏览

c# - 从内存流中删除数据

我正在尝试了解 .Net MemoryStream 类的用法。由于流忙,我需要使用存储一些临时动态长度的二进制数据。所以我分配了一个内存流并临时将数据写入它。当我的流空闲时,我从内存流中读取所有数据并将数据写入其中。我通过将位置指针设置为 0 来做到这一点

即mDataBuffer.Position=0;

但是,似乎 memorystream 类在读取后不会丢弃数据。所以下次我得到与以前相同的数据。为了确认我写了这个示例程序

令我惊讶的是输出是(1,1),尽管我期望输出是(1,4)。

我对 memorystream 的这种行为感到非常困惑。任何人都可以阐明一些观点。此外,如果这是正常行为,那么我如何从流中删除过去的数据。

在此先感谢, vaibhav

0 投票
4 回答
3996 浏览

c# - 大型 System.IO.MemoryStream 会导致我的应用程序的内存使用量急剧增加吗?

我正在构建一个允许用户从 URL 下载文件的库。我正在考虑的选项之一是让用户为文件指定预期的 MD5 校验和;库的 GetFile(string url) 函数确保下载流的校验和与用户指定的校验和匹配。

意识到 HttpWebResponse.GetResponseStream() 返回的 NetworkStream 不可搜索,我找到了一种复制 Stream 的方法,这要归功于这个问题的答案:如何在 C# 中读取 Http 响应流两次?. 不过,在我走得更远之前,我想弄清楚这种重复对记忆的影响是什么;不幸的是,谷歌和 MSDN 上的多次搜索都失败了。

该库对要下载的文件的大小没有限制。我的问题是,如果用户选择一个 2GB 的文件,.NET 2.0 中的 MemoryStream 实现是否足够聪明,可以有效地使用 PageFile 和 RAM,以至于系统不会因为 VM 崩溃而开始爬网?此外,Jon Skeet 对另一个问题的评论给了我一些思考 - 他断言即使在处理 MemoryStream 之后,内存也不是 100% 释放的。如何以及何时可以确保实际释放内存?它会根据系统的要求(和必要性)发布吗?

谢谢,马诺伊

0 投票
2 回答
5434 浏览

c# - 在 C# .NET 中的内存流中搜索和替换文本

我已经加载了一个带有 word 文档的内存流,我希望能够更改内存流中的特定文本并将其保存回 word 文档,例如搜索和替换功能。请任何人都可以帮我解决这个问题,因为我不想使用 Word Interop 库。我已经有了加载和保存文档的代码,请参见下文。问题是,如果我将内存字符串转换为字符串并使用字符串替换方法,当我保存字符串时,word 文档中的所有格式都会丢失,当我打开文档时,它显示的只是到处都是黑框。


我从互联网上的示例代码中复制了代码。所以这就是为什么使用 memorystream 的原因,因为我不知道该怎么做。我的问题是我工作的公司不想使用 interop 这个词,因为有时他们发现这个词可以在阻止编码功能执行的情况下显示弹出对话框。这就是为什么我想研究以编程方式实现邮件合并功能的方法。多年前我确实做了一件与我想在这里做的事情非常相似的事情,但在 Delphi 而不是 C# 中,我通常会丢失代码。因此,如果有人能对此有所了解,我将不胜感激。

0 投票
1 回答
923 浏览

c# - C# UDP 解码数据报随机失败

我在多线程应用程序中遇到问题,过去 3 天一直在调试它,但终其一生都无法弄清楚。我正在写这个,希望我在输入这个时有一个 DUH 时刻,或者有人在我提供的代码片段中看到一些明显的东西。这是发生了什么:

我一直在研究一个新的 UDP 网络库,并且有一个数据生成器,它将 UDP 数据报多播到多个接收器应用程序。发送者在两个不同的套接字上发送,这些套接字绑定到单独的 UDP 多播地址和单独的端口。接收方应用程序还创建两个套接字并将每个套接字绑定到发送方的多播地址/端口之一。

当接收器接收到数据报时,它会从 MemoryStream 中的缓冲区复制它,然后将其放入线程安全队列中,另一个线程从中读取数据并从 MemoryStream 中解码数据。

两个套接字都有自己的队列。

现在发生的事情真的很奇怪,它是随机发生的,不可重现,当我运行多个接收器应用程序时,它只会不时地在其中一个上随机发生。

基本上,从队列中读取 MemoryStream 的线程,通过像 ReadInt32() 等 BinaryReader 读取它,从而解码数据。然而,当它时不时地读取数据时,它从中读取的数据是不正确的,例如发送者永远不会编码的负整数。

然而,如前所述,解码仅在一个接收器应用程序中失败,在其他应用程序中数据报解码良好。现在您可能会说,好吧,UDP 数据报可能存在字节损坏或其他问题,但我已经记录了每个传入的数据报,并在所有接收器上进行了比较,并且每个应用程序接收到的数据报都是完全相同的。现在它变得更奇怪了,当我将解码失败的数据报转储到磁盘并编写一个读取它并通过解码器运行它的单元测试时,它解码得很好。此外,当我在解码器周围包裹一个 try/catch 时,重置 catch 中的 MemoryStream 位置并再次通过解码器运行它,它解码得很好。更奇怪的是,这也只会在我绑定两个套接字以从发送方读取数据时发生,如果我只绑定一个,它不会

以下是一些与正在发生的事情相对应的代码:

这是套接字的接收回调:

这是一些解码数据的存根代码:

您在 catch{} 部分中看到,我只是将 MemoryStream.Position 重置为 0 并再次调用相同的方法,下次它就可以正常工作了吗?在这一点上我真的没有想法,不幸的是没有 DUH 时刻写这个。任何人都知道可能发生了什么,或者我还能做些什么来解决这个问题?

谢谢,

汤姆

0 投票
4 回答
1576 浏览

c# - 如何简化此 MemoryStream 代码

此代码返回从字节数组加载的图像的缩略图。我试图理解为什么作者使用 4 个内存流,以及是否有一种简单的重写方法或者它是否可以。