相关疑难解决方法(0)

从流创建字节数组

从输入流创建字节数组的首选方法是什么?

这是我目前使用.NET 3.5的解决方案.

Stream s;
byte[] b;

using (BinaryReader br = new BinaryReader(s))
{
    b = br.ReadBytes((int)s.Length);
}
Run Code Online (Sandbox Code Playgroud)

读取和写入流的块是否仍然是一个更好的主意?

c# inputstream .net-3.5

860
推荐指数
11
解决办法
82万
查看次数

如何从.NET中的内存映射文件中快速读取字节?

在某些情况下,MemoryMappedViewAccessor类只是没有削减它以有效地读取字节; 我们得到的最好的是通用ReadArray<byte>,它是所有结构的路由,当你需要字节时涉及几个不必要的步骤.

可以使用a MemoryMappedViewStream,但因为它基于Stream你需要首先寻找正确的位置,然后读操作本身有许多不必要的步骤.

是否有快速,高性能的方法从.NET中的内存映射文件读取字节数组,因为它应该只是地址空间的特定区域来读取?

.net c# memory-mapped-files

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

内存映射文件长度

我正在研究内存映射文件.有没有办法知道内存映射文件内容的长度?我想要的是附加现有的内存映射文件.它很容易在文件中附加字节,但我希望追加字符串.

我们可以检查CAPACITY属性,但它返回我认为的字节大小.

为了更清楚,我正在解释这个场景.我正在创建内存映射文件A.我在创建它时写"Hello".它工作正常.现在我想将"World"写入现有文件A.

我使用下面的代码:

 var file = MemoryMappedFile.OpenExisting("myFile");
            string str = "String to append";
            using (var view = file.CreateViewAccessor())
            {
                using (var stream = file.CreateViewStream())
                {
                    System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream);
                    writer.Write(str.ToArray(), INT SIZE,Convert.ToInt32(view.Capacity), str.Length);//Error
                }
            }
            using (var stream = file.CreateViewStream())
            {
                Console.WriteLine("Reading appended File");
                System.IO.BinaryReader reader = new System.IO.BinaryReader(stream);
                Console.WriteLine(reader.ReadString());
                Console.WriteLine(string.Empty);
            }
Run Code Online (Sandbox Code Playgroud)

我用(//)标记了要求大小的行.我想知道(INT SIZE)的价值任何帮助将不胜感激.

[编辑]我正在使用C#,Visual Studio 2010.

现在我使用此代码追加:

var file = MemoryMappedFile.OpenExisting("myFile");
            string str = "String to append";
            string str1 = string.Empty;


            using (var stream …
Run Code Online (Sandbox Code Playgroud)

c# memory-mapped-files

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

标签 统计

c# ×3

memory-mapped-files ×2

.net ×1

.net-3.5 ×1

inputstream ×1