Tag: stream

读取从C#客户端发送的ObjectInputStream时出现“StreamCorruptedException:invalid stream header”

问题 我正在尝试从C#客户端向此Java Server发送protobuf消息,但是我得到了以下exception: java.io.StreamCorruptedException: invalid stream header: 0A290A08 java.io.StreamCorruptedException: invalid stream header: 0A290A08 at java.io.ObjectInputStream.readStreamHeader(Unknown Source) at java.io.ObjectInputStream.(Unknown Source) 说实话,我有点不知所措。 任何帮助表示赞赏。 谢谢! Java服务器 public ControllerThread(Socket s){ this.s = s; try { this.objectInputStream = new ObjectInputStream(s.getInputStream()); byte size = objectInputStream.readByte();System.out.println(“Server: BYTES SIZE:” + size); byte[] bytes = new byte[size]; objectInputStream.readFully(bytes); AddressBook adb = AddressBook.parseFrom(bytes); System.out.println(“Server: Addressbook:” […]

分割大型JSON文件的策略

我正在尝试将非常大的JSON文件拆分为给定数组的较小文件。 例如: { “headerName1”: “headerVal1”, “headerName2”: “headerVal2”, “headerName3”: [{ “element1Name1”: “element1Value1” }, { “element2Name1”: “element2Value1” }, { “element3Name1”: “element3Value1” }, { “element4Name1”: “element4Value1” }, { “element5Name1”: “element5Value1” }, { “element6Name1”: “element6Value1” }] } …向下到{“elementNName1”:“elementNValue1”}其中N是一个大数字 用户提供表示要拆分的数组的名称(在此示例中为“headerName3”)和每个文件的数组对象数,例如1,000,000 这将导致N个文件各自包含顶部名称:值对(headerName1,headerName3)和每个文件中最多1,000,000个headerName3对象。 我正在使用优秀的Newtonsof JSON.net,并了解我需要使用流来完成此操作。 到目前为止,我已经查看了JToken对象中的一个读数,以确定在读取标记时PropertyName ==“headerName3”的位置,但我想要做的是在整个JSON对象中读取数组中的每个对象而不是继续将JSON解析为JTokens; 这是我到目前为止构建的代码片段: using (StreamReader oSR = File.OpenText(strInput)) { using (var reader = new JsonTextReader(oSR)) { while […]

Outlook MailItem作为流

是否可以直接将MailItem作为Stream返回? ( 来自Microsoft.Office.Interop.Outlook MailItem ) 现在我找到了一个临时解决方案,首先将MailItem保存到目录,打开它并将流返回到文件,然后再次删除该文件。 这个临时解决方案在处理大量电子邮件时很慢,我想用例如直接将MailItem作为MemoryStream返回来替换它。 如何才能做到这一点? ( 由于评论编辑:缓慢是一部分,但另一个代码部分(无法修改)只接受一个流,这就是我正在寻找一个解决方案来打开一个MailItem作为流)

我如何要求Owin / Katana将标头写入输出流?

当我写回复时,Katana会跳过发送Elapsed-Time响应头。 在我第一次写入流之前,如何让它为我设置标题? 中间件#1 public override async Task Invoke(IOwinContext context) { var stopwatch = new Stopwatch(); stopwatch.Start(); await Next.Invoke(context); stopwatch.Stop(); context.Response.Headers.Add(“Elapsed-Time”, new[] {stopwatch.ElapsedMilliseconds.ToString()}); } 中间件#2 public override async Task Invoke(IOwinContext context) { await context.Response.WriteAsync(“test”); }

读取NetworkStream不会提前流

我有一个客户端 – 服务器应用程序,其中服务器传输一个4字节的整数,指定下一次传输的大小。 当我在客户端读取4字节整数(指定FILE_SIZE)时,下次读取流时,我得到FILE_SIZE + 4字节读取。 从此流中读取时是否需要将偏移量指定为4,或者是否有办法自动推进NetworkStream以使我的偏移量始终为0? 服务器 NetworkStream theStream = theClient.getStream(); //… //Calculate file size with FileInfo and put into byte[] size //… theStream.Write(size, 0, size.Length); theStream.Flush(); 客户 NetworkStream theStream = theClient.getStream(); //read size byte[] size = new byte[4]; int bytesRead = theStream.Read(size, 0, 4); … //read content byte[] content = new byte[4096]; bytesRead […]

为什么要以块的forms写入Stream?

我想知道为什么这么多的例子将字节数组读入chucks中的流而不是一次性…我知道这是一个软问题,但我很感兴趣。 我对硬件和填充缓冲区的理解有点非常依赖,并且你不想再次写入缓冲区,直到它被刷新到需要去的地方等等…但是使用.Net平台(和其他)现代语言)我看到两者的例子。 那么当使用哪个和什么时候,或者是第二个绝对不是没有? 这是我的意思(代码): var buffer = new byte[4096]; while (true) { var read = this.InputStream.Read(buffer, 0, buffer.Length); if (read == 0) break; OutputStream.Write(buffer, 0, read); } 而不是: var buffer = new byte[InputStream.Length]; var read = this.InputStream.Read(buffer, 0, buffer.Length); OutputStream.Write(buffer, 0, read); 我相信两者都合法吗? 那么为什么要经历while循环的所有大惊小怪(无论你决定如何构建它)? 我在这里玩恶魔倡导者,因为我想尽可能多地学习:)

如何在.Net MVC中将文件从磁盘流式传输到客户端浏览器

我的操作将文件从磁盘返回到客户端浏览器,目前我有: public FileResult MediaDownload () { byte[] fileBytes = System.IO.File.ReadAllBytes(Server.MapPath(filePath)); return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName); } 这样它将整个文件加载到内存中并且非常慢,因为文件加载到内存后开始下载。 处理此类文件下载的最佳方法是什么? 谢谢

将FileStream中的数据读入通用流

将流读入另一个流的最有效方法是什么? 在这种情况下,我试图将文件流中的数据读入通用流。 我知道我可以做以下事情: 1.逐行读取并将数据写入流 2.读取块的字节并写入流 等等 我只是想找到最有效的方法。 谢谢

获得“Stream不支持写作”。 以下代码中的exception

我正在尝试将图像上传到Amazon S3,但在此之前我正在调整图像大小。 为了resize,我必须传递流对象,并在某一点(行注释为//错误)我得到’Stream不支持写入’。 例外。 请帮忙。 public ActionResult AddPost(AddPost post) { Guid guid = new Guid(); AccountController ac=new AccountController(); string randomId = guid.ToString(); PutAttributesRequest putAttributesAction = new PutAttributesRequest().WithDomainName(“ThisIsMyEXDomainPosts”).WithItemName(randomId); List attrib = putAttributesAction.Attribute; System.IO.Stream stream; System.IO.StreamReader sr = new System.IO.StreamReader(post.imageFileAddress.ToString()); sr.ReadToEnd(); stream = sr.BaseStream; Amazon.S3.Model.PutObjectRequest putObjectRequest = new Amazon.S3.Model.PutObjectRequest(); System.Drawing.Image img = System.Drawing.Image.FromStream(stream); System.Drawing.Image imgResized = ResizeImage(img, […]

我如何检查Stream.Null?

我有一个WCF服务,返回一个类似于以下内容: public Stream StreamFile(string filepath) { try { // Grab the file from wherever it is // Throw an exception if it doesn’t exist return fileStream; } catch (Exception ex) { // Log the exception nicely in a place of my user’s choosing } return Stream.Null; } 我曾经尝试返回null,但是如果找不到该文件,我就开始遇到这个问题: WCF – MessageBodyMember – Stream – “Value不能为null” […]