标签: binarywriter

需要帮助使用Read7BitEncodedInt

我一直在寻找2小时或更好的方法来使用Read7BitEncodedInt方法.我需要以某种方式使用它来减少我的文件大小(在这种情况下可能减少100mb或更多).我也在考虑使用ReadString方法,因为它似乎做了大致相同的事情.但这似乎不太合适,我不确定它会起作用.如果还有其他替代方案,我不知道我也愿意使用它.

总结.如何将Read7BitEncodedInt方法实现为以下代码?另外,我不太确定我的Write7BitEncodedInt方法也是正确的.

    public void SaveFile()
    {
        using (FileStream stream = new FileStream("C:\\A_random.txt", FileMode.Create))
        {
            using (BinaryWriter writer = new BinaryWriter(stream))
            {
                for (int i = 0; i < typeCount.Count; i++)
                {
                    writer.Write((byte)typeCount[i]);
                    writer.Write(type[i]);
                }
                writer.Close();
            }
        }
        LoadFile();
    }

    public void LoadFile()
    {
        using (FileStream stream = new FileStream("C:\\A_random.txt", FileMode.Open))
        {
            using (BinaryReader reader = new BinaryReader(stream))
            {
                int i = 0;
                while (stream.Position != stream.Length)
                {
                    int count = reader.Read7BitEncodedInt();
                    byte val = reader.ReadByte();
                    for (int ii = 0; …
Run Code Online (Sandbox Code Playgroud)

.net c# binary 7-bit binarywriter

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

二进制Writer返回null的字节数组

我正在使用MRIM(Mail.Ru代理)协议.MRIM是一个二进制协议,所以为了使数据成为二进制,我使用的是BinaryWriter类.这是代码:

    private byte[] CreateMrimPacket(ulong message) 
    { 
       byte[] binaryData; 
        using (MemoryStream ms = new MemoryStream()) 
        { 
            using (BinaryWriter bw = new BinaryWriter(ms)) 
            { 
                bw.Write(CS_MAGIC); //CS_MAGIC is a constant that doesn't equal 0
                bw.Write(PROTO_VERSION); //Same thing
                bw.Write((ulong)SeqCounter); 
                bw.Write(message); 
                bw.Write((ulong)0); 
                bw.Write((ulong)0); 
                bw.Write((ulong)0); 
                bw.Write((ulong)0); 
                bw.Write((ulong)0); 
                bw.Write((ulong)0); 
                bw.Write((ulong)0); 
                binaryData = new byte[ms.Length]; 
                ms.Read(binaryData, 0, binaryData.Length); 
            } 
        } 
        return binaryData; 
    } 
Run Code Online (Sandbox Code Playgroud)

此函数返回字节数组,但所有值都为0.
请帮我解决这个问题.
提前致谢

c# binarywriter

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

如何在文件末尾使用BinaryWriter附加数据?

也许在Stackoverflow中提出了类似的问题,但我似乎无法找到解决问题的方法.

我只想打开一个可写的二进制流,并能够使用相同的流将数据附加到该文件.显然,如果您打开一个文件进行写入,它将删除它包含的所有数据并启动一个新文件.另外,如果你打开一个文件只是为了阅读,你不能写,但只能阅读.人们确实建议在线使用两个独立的流 - 一个用于阅读,另一个用于写作.我认为在这种情况下不会起作用.

看看我的示例代码,我想做类似的事情:

fs:BinaryWriter;

fs := new BinaryWriter(File.Create('c:\test.dat'));

fs.seek(0,SeekOrigin.End);

fs.Write('test string');

fs.Close;
Run Code Online (Sandbox Code Playgroud)

.net append delphi-prism binaryreader binarywriter

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

ASP.NET:子用户控件内UpdatePanel内的Response.BinaryWrite

所以我有以下情况:

--Page.aspx-

UpdatePanel
   ListView
      UserControl.ascx
Run Code Online (Sandbox Code Playgroud)

--- UserControl.ascx-

    ListView
        Button|ID:btnDownloadAttachment
Run Code Online (Sandbox Code Playgroud)

我使用以下方法下载附件:

public void OpenDocument(byte[] AttContent, string fileName, string inExtension)
{
    Response.Clear();
    Response.ClearHeaders();
    Response.ClearContent();

    Response.ContentType = "application/pdf";

    Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName + inExtension);
    Response.AddHeader("Content-Length", AttContent.Length.ToString());
    Response.BinaryWrite(AttContent);
}
Run Code Online (Sandbox Code Playgroud)

但是由于内容在更新面板中,因此出现以下错误:

“ Sys.WebForms.PageRequestManagerParserErrorException:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器收到的消息。”

asp.net user-controls updatepanel parent-child binarywriter

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

读写c#

我想在c#中读取文件(图像)和另一个文件视频,并在单个txt文件中保存(写入)两个文件的所有内容(一个接一个).现在我想再次检索第一个图像文件内容和第二个文件内容分开.是否可以读取视频和图像文件以保存在单个文件中.

c# file binaryreader binarywriter

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

使用readbinary时导致流不可读

我试图通过套接字发送一个值.所以我在我的项目客户端和服务器中有两个部分.

客户端使用以下代码向服务器发送值:

  NetworkStream networkStream = socketForServer.GetStream();
            System.IO.BinaryWriter binaryWriter =
               new System.IO.BinaryWriter(networkStream);

            //------
            int messageSource = 0;
            int messageDesitination = 0;
            int interlockingId = 0;
            int trackId = 0;
            int trainId = 2;
            int direction = 0;
            int messageType = 0;
            int informationType = 0;
            int dateTime = 0;

foreach (Sensor LeftSensorList in LeftSensor)
                {

                    binaryWriter.Write(messageSource);
                    binaryWriter.Write(messageDesitination);
                    binaryWriter.Write(interlockingId);
                    binaryWriter.Write(trackId);
                    binaryWriter.Write(trainId);
                    binaryWriter.Write(direction);
                    binaryWriter.Write(messageType);
                    binaryWriter.Write(informationType);
                    binaryWriter.Write(dateTime);

                    binaryWriter.Flush();
                    binaryWriter.Close();
                    Thread.Sleep(4000);

                }
Run Code Online (Sandbox Code Playgroud)

在服务器部分我应该读取二进制值:

static void Listeners()
        {

            Socket socketForClient = tcpListener.AcceptSocket();
            if (socketForClient.Connected)
            {

                NetworkStream …
Run Code Online (Sandbox Code Playgroud)

c# sockets binaryreader binarywriter

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

将字符串和字节写入同一个 FileStream

我需要创建一个文件,其中某些部分是字符串(utf-8),而某些部分是字节。

我用StreamWriter和修改了几个小时BinaryWriter,但这是唯一有效的:

        using (var stream = new FileStream(_caminho, FileMode.Create, FileAccess.Write))
        {
            using (var writer = new StreamWriter(stream))
            {
                writer.Write(myString);
            }   
        }
        using (var stream = new FileStream(_caminho, FileMode.Append, FileAccess.Write))
        {
            using (var writer = new BinaryWriter(stream))
            {
                writer.Write(oneSingleByte);
            }
        }
Run Code Online (Sandbox Code Playgroud)

问题是我必须关闭 FileStream 并打开另一个文件流才能写入单个字节,因为该方法要么BinaryStream.Write(string)在前面添加一个“长度”字段(在我的情况下是不需要的),要么对StreamWriter.Write(byte)字节值进行编码而不是实际直接写入。

我的问题是:是否可以使用另一个类,以便我只能创建一次 FileStream,并依次写入我的字符串和字节?

c# filestream streamwriter binarywriter

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

EndOfStreamException,带有简单的BinaryWriter和BinaryReader

我正在使用以下代码:

var fileStream = new MemoryStream();
var binaryWriter = new BinaryWriter(fileStream);
var binaryReader = new BinaryReader(fileStream);

binaryWriter.Write("Hello");
var msg = binaryReader.ReadString();
Run Code Online (Sandbox Code Playgroud)

但是我得到以下异常:

System.IO.EndOfStreamException: Unable to read beyond the end of the stream.
Run Code Online (Sandbox Code Playgroud)

在读取之前,binaryReader.BaseStream.Length大于0,但binaryReader.PeekChar()返回-1.

我究竟做错了什么?

c# serialization memorystream binaryreader binarywriter

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

在C#中使用BinaryWriter将文件添加到zip文件时内存不足

我试图将文件添加到Zip文件,保留目录.下面的代码基本上是工作的,只要我没有几个100 Mb的文件压缩.如果我只用一个大约250 Mb的文件压缩一个目录(在一个有足够内存BTW的系统上),我就会得到一个OutOfMemory异常write.Write().

我已经修改了代码以读取块,因为它在读取/写入整个文件时首次失败.我不知道为什么它仍然失败?

    using (FileStream zipToOpen = new FileStream(cZipName, eFileMode)) 
        ZipArchiveEntry readmeEntry = archive.CreateEntry(cFileToBackup

);

    using (BinaryWriter writer = new BinaryWriter(readmeEntry.Open()))
    {
        FileStream fsData = null;                                                                // Load file into FileStream
        fsData = new FileStream(cFileFull, FileMode.Open, FileAccess.Read);
        {
            byte[] buffer = new byte[1024];
            int bytesRead = 0;
            while ((bytesRead = fsData.Read(buffer, 0, buffer.Length)) > 0)
            {
                 writer.Write(buffer,0,bytesRead); // here it fails
                 fsData.Flush(); // ->CHANGED  THIS TO writer.Flush() SOLVED IT - nearly..
            }
        }
        fsData.Close();
    }
Run Code Online (Sandbox Code Playgroud)

编辑:Arkadiusz …

c# out-of-memory binarywriter

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

使用BinaryReader/BinaryWriter构建聊天

您好我正在尝试使用BinaryReader/BinaryWriter建立聊天,我陷入了死胡同,我无法弄清楚如何让我的服务器将消息发送给所有连接的客户端..

我已经尝试将所有客户端添加到列表中并在列表上运行foreach循环,以将消息发送到每个连接的客户端,但没有进行锻炼.

服务器:

using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace server {
    internal class Program {
        public static int counter = 0;
        //List<Client> clientList = new List <Client>();

        private static readonly IPAddress sr_ipAddress = IPAddress.Parse("127.0.0.1");
        public TcpListener Listener = new TcpListener(sr_ipAddress, 8888);
        public static void Main(string[] args) {
            Program server = new Program();
            server.Start();
            Console.ReadKey();
        }
        public void Start() {
            Listener.Start();
            Console.WriteLine("Server started");
            StartAccept();
        }
        private void StartAccept() {
            Listener.BeginAcceptTcpClient(HandleAsyncConnection, Listener);
        }
        public void HandleAsyncConnection(IAsyncResult res) …
Run Code Online (Sandbox Code Playgroud)

c# tcpclient binaryreader binarywriter server-communication

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