标签: memorystream

C# Memorystream未完全保存到文件中

MemoryStream我正在使用和将对象导出到 csv StreamWriter。但保存文件后,我发现文件末尾丢失了。它在一条线的中间被切断。

下面是我的代码:

public void Export(ProductExport productExport)
{
    var country = (Country)(int.Parse(productExport.Firma.Code));

    using(var stream = new MemoryStream())
    {
        var sw = new StreamWriter(stream);

        // Write header row
        sw.WriteLine(
            "{0};{1};{2};{3};{4};{5};{6};{7};{8};{9}",
            "Groep",
            "TecDoc Leverancier",
            "TecDoc Ref",
            "SA",
            "EAN",
            "Omschrijving NL",
            "V/E",
            "VPE",
            "Prijs per",
            "Bruto prijs"
        );

        foreach(var product in productExport.Products)
        {
            // Write header row
            sw.WriteLine(
                "{0};{1};{2};{3};{4};{5};{6};{7};{8};{9}",
                product.Artgrp,
                product.TecDoc != null ? product.TecDoc.Supplier : "",
                product.TecDoc != null ? product.TecDoc.Value : "",
                product.Ids.Where<Id>(i => i.Type == "SA").Select(i => …
Run Code Online (Sandbox Code Playgroud)

c# memorystream streamwriter

0
推荐指数
1
解决办法
1328
查看次数

将 MemoryStream 保存到文件会产生 0 字节

我正在使用此代码将 MP3 MemoryStream 写入文件:

using (var nSpeakStreamAsMp3 = new MemoryStream())
using (var nWavFileReader = new WaveFileReader(nSpeakStream))
using (var nMp3Writer = new LameMP3FileWriter(nSpeakStreamAsMp3, nWavFileReader.WaveFormat, LAMEPreset.STANDARD_FAST))
{
    nWavFileReader.CopyTo(nMp3Writer);

    string sPath = "C:\\inetpub\\wwwroot\\server\\bin\\mymp3.mp3";

    using (FileStream nFile = new FileStream(sPath, FileMode.Create, System.IO.FileAccess.Write))
    {
        nSpeakStreamAsMp3.CopyTo(nFile);
    }

    sRet = (String.Concat("data:audio/mpeg;base64,", Convert.ToBase64String(nSpeakStreamAsMp3.ToArray())));
}

return sRet;
Run Code Online (Sandbox Code Playgroud)

由于某种我没有看到的原因,这会生成一个 0 字节的文件。但是,MP3 流是有效的并且可以工作。我将其作为 Base64String 传递到网站,并且我确实听到了它。

这里可能错误在哪里?

c# memorystream using filestream

0
推荐指数
1
解决办法
2128
查看次数

为什么 MemoryStream() 具有数据,即使它没有使用任何数据源进行初始化

我有一个测试.Net Core应用程序,我想从管道中读取 http 响应以供我个人实践。

这个最小代码示例提供了 http 响应。我知道它正在破坏响应主体,我需要稍后修复它,但这不是我的问题。MemoryStream()我的问题是即使我没有使用任何数据源初始化它,它内部如何有http响应?

"Startup.cs":

public void Configure(IApplicationBuilder app)
{
    app.Use(async (context, next) =>
    {
        using (var swapStream = new MemoryStream())
        {
            context.Response.Body = swapStream;

            await next.Invoke();

            swapStream.Seek(0, SeekOrigin.Begin);
            string responseBody = new StreamReader(swapStream).ReadToEnd();
        }
    });
 }
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,MemoryStream()根本没有使用任何数据源进行初始化。但最后responseBody我可以看到我的http响应。让我更困惑的是,如果我删除,context.Response.Body = swapStream;那么我在responseBody.

如果有人能帮助我理解这段代码是如何工作的,我将不胜感激。

c# memorystream asp.net-core

-1
推荐指数
1
解决办法
473
查看次数

Delphi中对服务器的访问冲突

试图写简单的客户端和服务器接收/发送数据TMemoryStream.当我在客户端按下按钮时btnTestClick出现错误 Access violation at address 005D5581 in module 'Client.exe'. Write of adress 00000000.我做错了什么?

Btw客户端服务器连接工作正常我瘦cuz IdTCPClient1Connected功能正在写'Client Connected!'.

客户代码

procedure TForm1.btnTestClick(Sender: TObject);
var
  msRecInfo: TMemoryStream;
  arrOf: array of Integer; i:integer;
begin
  for i := 0 to 10 do
    arrOf[i]:=random(100);

  msRecInfo:= TMemoryStream.Create;

  try
    msRecInfo.Write(arrOf, SizeOf(arrOf));
    idTCPClient1.IOHandler.Write(msRecInfo);
  finally
     msRecInfo.Free;
  end;

end;

end
Run Code Online (Sandbox Code Playgroud)

服务器代码

procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
   msRecInfo: TMemoryStream;
  arrOf: array of Integer; i:integer;
begin
  msRecInfo:= TMemoryStream.Create;
  try
    AContext.Connection.IOHandler.ReadStream(msRecInfo, -1, False);

    msRecInfo.Position := 0;
    msRecInfo.Read(arrof, SizeOf(arrof)); …
Run Code Online (Sandbox Code Playgroud)

delphi tcp memorystream

-2
推荐指数
1
解决办法
687
查看次数

标签 统计

memorystream ×4

c# ×3

asp.net-core ×1

delphi ×1

filestream ×1

streamwriter ×1

tcp ×1

using ×1