标签: binarywriter

二进制读取器和写入器同时打开?

我正在编写处理使用哈希的文件的代码。我需要读取一个块,然后对其进行哈希处理,然后写入它,然后读取另一个块,等等。

换句话说,我需要做大量的阅读和写作。我确信这真的很简单,但我只是想由专业人士运行它......

是否可能并且可以接受执行以下操作:

BinaryReader br = new BinaryReader (File.OpenRead(path));
BinaryWriter bw = new BinaryWriter (File.OpenWrite(path));
br.dostuff();
bw.dostuff();
Run Code Online (Sandbox Code Playgroud)

我记得在尝试打开和写入文件时遇到了某种冲突的文件流错误,并且我不确定我做了什么来获得它。问题是两个文件流吗?我可以有一个流来读取和写入吗?

c# filestream binaryreader binarywriter

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

在异步代码中使用BinaryWriter或BinaryReader

我有一个float写入文件的列表.下面的代码做了事情,但它是同步的.

List<float> samples = GetSamples();

using (FileStream stream = File.OpenWrite("somefile.bin"))
using (BinaryWriter binaryWriter = new BinaryWriter(stream, Encoding.Default, true))
{
    foreach (var sample in samples)
    {
        binaryWriter.Write(sample);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想异步操作但BinaryWriter不支持异步操作,这是正常的,因为它每次只写几个字节.但大多数情况下,操作使用文件I/O,我认为它可以而且应该是异步的.

我试着写一个MemoryStreamBinaryWriter和时完成我复制MemoryStreamFileStreamCopyToAsync,然而这引起性能下降(总时间)高达100%的大文件.

如何将整个操作转换为异步?

c# binaryreader binarywriter async-await

5
推荐指数
2
解决办法
5481
查看次数

BinaryWriter和BinaryFormatter.Serialize之间的区别?

我是新来的对象序列化,在我学习的过程中如何使用读取和写入文件(并行化和串行)BinaryFormatter,我遇到了BinaryReaderBinaryWriter,这似乎是做同样的事情.

有没有之间的一些微妙的差异BinaryFormatter.Serialize()BinaryWriter?或者BinaryWriter只是执行相同操作的更紧凑的方式BinaryFormatter.Serialize()

c# serialization binaryformatter binarywriter deserialization

5
推荐指数
2
解决办法
3745
查看次数

如何将二进制字符串写入文件 C#

我有一个像 temp = "0101110011" 这样的二进制数字符串,我想将它保存为文件,这个临时文件有 10 个字符,我如何将此字符串保存到 10 位长度的文件?

void Save_Data(string temp)
{
    bool[] BoolArray = new bool[temp.Length];
    BitArray Barray = new BitArray(BoolArray.Length);
    char[] ch = temp.ToCharArray();

    for (int i = 0; i < temp.Length; i++)
    {
        if (ch[i] == '0')
        {
            Barray[i] = false;
        }
        else
        {
            Barray[i] = true;
        }
    }

    Stream stream = new FileStream("D:\\test.dat", FileMode.Create);
    StreamWriter sw = new StreamWriter(stream);

    foreach (bool bit in Barray)
    {
        sw.Write(bit ? 1 : 0);
    }

    sw.Flush();
    sw.Close();
}
Run Code Online (Sandbox Code Playgroud)

使用此代码,我的文件长度为 …

c# bitarray binarywriter

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

在Object上使用BinaryWriter

我的应用程序是一个小型的C#数据库,我BinaryWriter用来将数据库保存到一个文件,该文件与bool,uint32等基本类型工作正常.
虽然我有一个类型的变量Object(允许用户)存储任何数据类型),但由于我的应用程序不(也不需要)知道此变量的实际类型,我不确定如何使用它来编写它BinaryWriter.
有没有办法我可以抓住变量的内存并保存?那可靠吗?

编辑:

ba_friend提供的答案有两个函数用于将Object解序/序列化为字节数组,可以使用BinaryWriter将其与其长度一起写入.

c# database binarywriter

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

你必须刷新你的 BinaryWriter 数据吗

在 C# 中,我使用 BinaryWriter,如下所示:

BinaryWriter br = new BinaryWriter(myPipe);
var bytes = new byte[5];
br.Write(bytes);
br.Flush();
Run Code Online (Sandbox Code Playgroud)

https://msdn.microsoft.com/de-de/library/system.io.binarywriter.flush(v=vs.110).aspx提到您应该使用刷新二进制编写器。

但是我注意到,一旦调用 br.Write,数据就已经发送,并且我认为不需要调用 br.Flush?

我想知道是否可以删除那 1 行(不必要的)代码:br.Flush()或者是否还有更多代码?

c# binarywriter

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

使用Response.BinaryWrite显示JPEG

我正在显示这样的图像:

<img src='counter.asp'>
Run Code Online (Sandbox Code Playgroud)

counter.asp正在做一个点击计数器确定图像显示的频率(我将用modrewriteURL 替换它).

问题:在counter.asp脚本中我需要将实际.jpg图像发送到浏览器.怎么可以这样做?我想我需要通过FSO加载图像,然后使用Response.BinaryWrite- 任何想法发送它?

vbscript asp-classic binarywriter

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

无法使用二进制文件写入文件

为什么这段代码不会将我的字符串写入文件:

 string file = "Myfile.txt";
        MemoryStream ms = new MemoryStream();

void writeToFile(string text)
        {
            System.Text.ASCIIEncoding  encoding=new System.Text.ASCIIEncoding();
            byte[] barr = encoding.GetBytes(text);


            ms.Write(barr, 0, barr.Length);

            using (FileStream fs = new FileStream(file, FileMode.OpenOrCreate))
            {
                using (BinaryWriter bw = new BinaryWriter(ms))
                {
                    bw.Write(ms.ToArray());
                }
            }
        }


        static void Main(string[] args)
        {

            Program p = new Program();

            p.writeToFile("Tony Test");

            Console.ReadLine();

        }
Run Code Online (Sandbox Code Playgroud)

c# filestream binarywriter

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

BinaryWriter 问题 - “代码在 Write() 方法之间添加一些字节”

我尝试使用 BinaryWriter 然后使用 BinaryReader 编写一些代码。当我想写时,我使用 Write() 方法。但问题是,在 Write 方法的两行之间出现了一个新字节,该字节在 ASCII 表中为十进制 31(sometines 24)。你可以在这张图片上看到它:

在此输入图像描述

您可以看到索引 4 处的字节(第 5 个字节)的 ASCII 十进制值是 31。我没有在那里插入它。正如您所看到的,第一个 4 个字节是为数字(Int32)保留的,接下来是其他数据(主要是一些文本 - 现在这并不重要)。

正如您从我编写的代码中看到的: - 在第一行输入数字 10 - 在第二行文本“这是一些文本...”

第 5 个字节(12 月 31 日)是怎么出现在中间的?

这是我的代码:

static void Main(string[] args)
    {           
        //
        //// SEND - RECEIVE:
        //
        SendingData();
        Console.ReadLine();
    }

    private static void SendingData()
    {
        int[] commandNumbers = { 1, 5, 10 }; //10 is for the users (when they send some text)!

        for (int i …
Run Code Online (Sandbox Code Playgroud)

c# yield-return binaryreader binarywriter

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

使用BinaryWriter将一个位写入二进制文件

我想将一个位写入二进制文件.

using (FileStream fileStream = new FileStream(@"myfile.bin", FileMode.Create))
using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
{
    binaryWriter.Write((bool)10);
}
Run Code Online (Sandbox Code Playgroud)

binaryWriter.Write((bit)1);
我使用binaryWriter.Write((bool)1)文件时有一个字节,但我想写一个字节.这可能吗?

c# byte bit writer binarywriter

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