Tag:

将流保存到c#和winrt中的文件中

我在c#和winrt: var stream = await speech.GetSpeakStreamAsync(SpeechText.Text, language); stream是一个Windows.Storage.Streams.IRandomAccessStream 所以我对c#和winrt完全不熟悉。 我如何将包含wav文件的流保存到文件中? 在此先感谢Basilius

在C#代理中从Web服务器读取图像

我正在尝试编写一个代理,它从一个服务器读取一个图像并将其返回给提供的HttpContext,但我只是回到了字符流。 我正在尝试以下方面: WebRequest req = WebRequest.Create(image); WebResponse resp = req.GetResponse(); Stream stream = resp.GetResponseStream(); StreamReader sr = new StreamReader(stream); StreamWriter sw = new StreamWriter (context.Response.OutputStream); sw.Write (sr.ReadToEnd()); 但正如我之前提到的,这只是回应文本。 我该怎么说它是一张图片? 编辑:我正在img标记的source属性的网页中访问它。 将内容类型设置为application / octet-stream提示保存文件并将其设置为image / jpeg只响应文件名。 我想要的是调用页面返回和显示的图像。

使用其他用户凭据从远程路径获取FileStream文件

在我的应用程序中,我使用FileStream从文件中读取,该文件位于网络中的某个文件共享位置。 所以我的remoteFilePath变量类似于: \\computername\folder\file.pdf FileStream fileStream = new FileStream(remoteFilePath, FileMode.Open, FileAccess.Read, FileShare.None, 1024 * 1024) 不幸的是,我正在运行此应用程序的用户(我已登录到PC)无法访问此文件共享。 我有另一个用户(域,登录名和密码),可以访问这些文件。 是否可以使用其他用户凭据将文件转换为文件流? 我可以冒充用户只获取文件,然后继续使用我自己的用户吗?

我可以使用流来插入或更新SQL Server(C#)中的行吗?

假设我有一个VarBinary [MAX]列,我可以使用从System.IO.Stream派生的类型插入或更新到该列吗? 怎么样? 我认为我可以使用SqlDataReader从这样的列中获取只读流,在读取器上调用GetSqlBytes() ,获取SqlBytes实例,然后在其上引用Stream属性。 我想要的是反过来 – 我想要一个流更新或插入。 可能? (来自c#…没有编写T-SQL?) 编辑 我见过这样的代码: System.Data.SqlClient.SqlCommand _SqlCommand = new System.Data.SqlClient.SqlCommand(_SQL, _SqlConnection); // Convert image to memory stream System.IO.MemoryStream _MemoryStream = new System.IO.MemoryStream(); _Image.Save(_MemoryStream, _ImageFormat); // Add image as SQL parameter System.Data.SqlClient.SqlParameter _SqlParameter = new System.Data.SqlClient.SqlParameter(“@” + _ImageFieldName, SqlDbType.Image); _SqlParameter.Value = _MemoryStream.ToArray(); _SqlCommand.Parameters.Add(_SqlParameter); // Executes a Transact-SQL statement against […]

使用Compression.DeflateStream压缩和解压缩Stream

我正在尝试使用Compression.DeflateStream压缩和解压缩Stream。 压缩似乎工作正常,因为下面的代码将我的Stream压缩为一个110字节长的数组。 但是,读取解压缩的Stream会导致空字符串。 class Program { static void Main(string[] args) { // Compress a random string value string value = Path.GetRandomFileName(); byte[] compressedBytes; using (var writer = new StreamWriter(new MemoryStream())) { writer.Write(value); writer.Flush(); writer.BaseStream.Position = 0; compressedBytes = Compress(writer.BaseStream); } // Decompress compressed bytes Stream decompressedStream = Decompress(compressedBytes); // here already applies: decompressedStream.Length == 0 […]

将图标文件保存到硬盘驱动器

我知道这一定非常容易 – 令人难以置信的是,基于VB6的简单程度,我在多长时间内都在寻找这个问题的答案。 我只想使用Icon.ExtractAssociatedIcon从EXE文件中提取一个图标,然后将此图标文件保存到我的硬盘中。 所以,这就是我所拥有的,而且我也会告诉你我所尝试过的东西,所以你不要以为我在偷懒。 OpenFileDialog ofd = new OpenFileDialog(); ofd.ShowDialog(); string s = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @”\IconData.ico”; Icon ico = Icon.ExtractAssociatedIcon(ofd.FileName); Bitmap bmp = ico.ToBitmap(); bmp.Save(s, System.Drawing.Imaging.ImageFormat.Icon); 上面的代码只是在我的桌面上创建了一个名为“IconData.ico”的文件,其长度为0个字节。 再一次,我相信这一定非常容易,但对于我的生活,我无法理解。 谢谢!

如何将整个流加载到MemoryStream?

就像在主题中一样:我想从文件(从流)读取数据到内存(memorystream)以提高我的应用程序速度。 怎么做?

在给定字节序列开始的流中查找位置的最佳方法

您如何看待在给定字节序列开始的System.Stream中找到位置的最佳方法是什么(第一次出现): public static long FindPosition(Stream stream, byte[] byteSequence) { long position = -1; /// ??? return position; } PS最简单但最快速的解决方案是优先考虑的。 🙂

“.NET框架默认使用UTF-16编码标准”是什么意思?

我的学习指南(70-536考试)在文章和编码章节中说了两次,就在IO章之后。 到目前为止,所有示例都与使用FileStream和StreamWriter进行简单文件访问有关。 它也说“如果你不知道在创建文件时使用什么编码,请不要指定一个,.NET将使用UTF16”和“使用Stream构造函数重载指定不同的编码”。 别担心实际的重载在StreamWriter类上,但是嘿,无论如何。 我现在正在reflection器中查看StreamWriter,我确信我可以看到默认是默认的UTF8NoBOM。 但这些都没有在勘误表中列出。 这是一本旧书(对两个版本的错误进行了调整)所以如果错了,我会认为有人已经接受了…… 让我想到也许我不理解它。 那么…..任何想法,它在说什么? 其他一些有默认的地方? 这让我很困惑。

.NET没有可靠的异步套接字通信?

我曾经在.NET中写过一个Crawler。 为了提高其可伸缩性,我尝试利用.NET的异步API。 System.Net.HttpWebRequest具有异步API BeginGetResponse / EndGetResponse。 但是,这对API只是为了获取HTTP响应头和Stream实例,我们可以从中提取HTTP响应内容。 所以,我的策略是使用BeginGetResponse / EndGetResponse来异步获取响应Stream,然后使用BeginRead / EndRead从响应Stream实例异步获取字节。 在Crawler进行压力测试之前,一切看起来都很完美。 在压力测试下,Crawler遭受高内存使用。 我用WinDbg + SoS检查了内存,并说明System.Threading.OverlappedData实例有很多字节数组。 经过一些互联网搜索后,我从微软发现了这个KB http://support.microsoft.com/kb/947862 。 根据KB,异步I / O的数量应该具有“上限”,但它不会告诉“建议的”绑定值。 所以,在我看来,这个KB没有任何帮助。 这显然是一个.NET错误。 最后,我不得不放弃从响应Stream中异步提取字节的想法,并且只是以同步方式进行。 允许带有点网络套接字的异步IO的.NET库(Socket.BeginSend / Socket.BeginReceive / NetworkStream.BeginRead / NetworkStream.BeginWrite)必须具有其异步IO的未完成缓冲区(发送或接收)数量的上限。 网络应用程序应该具有其发布的未完成异步IO数量的上限。 编辑:添加一些问号。 任何人都有在Socket和NetworkStream上进行异步I / O的经验吗? 一般来说,生产中的爬虫是否通过同步或异步的互联网进行I / O操作?