- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Windows 下,当容量参数(最后一个参数)设置为比基础文件更大的大小时,此 F# 代码会将文件从 12 字节扩展到 655346 字节。这似乎是扩展内存映射文件的最干净的方法。在 mono/linux 下,它会抛出 ArgumentException: capacity 除非文件与映射的容量一样长。有没有一种干净的方法可以让单声道扩展文件,或者我是否必须在映射之前预先扩展文件?
let Main () =
let path = "parts.pash"
let l = 65536L
let mm = MemoryMappedFiles.MemoryMappedFile.CreateFromFile(path,FileMode.OpenOrCreate,"pashmap",l)
()
Main()
Unhandled Exception: System.ArgumentException: capacity at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile (System.String path, FileMode mode, System.String mapName, Int64 capacity, MemoryMappedFileAccess access) [0x00000] in :0 at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile (System.String path, FileMode mode, System.String mapName, Int64 capacity) [0x00000] in :0 at Program.Main () [0x00000] in :0 at .$Program.main@ () [0x00000] in :0
[daz@clowder pash]$ mono --version
Mono JIT compiler version 2.10.1 (tarball Mon Apr 4 10:40:52 PDT 2011)
Copyright (C) 2002-2011 Novell, Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: x86
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: Included Boehm (with typed GC and Parallel Mark)
let f = File.Open(path,FileMode.Append,FileAccess.Write)
let pad = l- FileInfo(path).Length
let padding = Array.create (int32 pad) 0uy
f.Write(padding,0,int pad)
f.Close()
最佳答案
查看 CreateFromFile
的 .NET 实现没有实现该功能。除了参数检查之外,据我所知,它是围绕 Windows API 调用的一个纤薄包装器。
出于这个原因,创建更大文件的能力更像是 .NET 领域的巧合,因此如果底层操作系统不允许类似的功能,Mono 删除该能力也就不足为奇了。
更简单地说,不太可能,因为 .NET 版本在技术上也不会扩展文件,Windows API 会。
关于f# - MemoryMappedFiles.MemoryMappedFile.CreateFromFile 不会在 linux/mono 下扩展文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9895384/
在我的 WCF 服务中,我需要提供支持 Range 的文件下载功能用于分 block 下载的 HTTP header 。第一次调用GetFile服务方法创建新的MemoryMappedFile来自磁盘
在 Windows 下,当容量参数(最后一个参数)设置为比基础文件更大的大小时,此 F# 代码会将文件从 12 字节扩展到 655346 字节。这似乎是扩展内存映射文件的最干净的方法。在 mono/l
我有一些方法可以使用 MemoryMappedFiles 来写入/读取数据。如果我使用简单的字符串作为文件名,它们就可以正常工作,例如“file.mmf”。但是,如果我使用完整目录路径,则会抛出上述异
我在执行 MemoryMappedFile 流式传输时遇到了一个小问题。我有 2 个项目,一个用于发送字节,另一个用于读取字节。在这两个进程之间应该有一个 2 秒的 sleep 定时器。 我已经实现了
我在使用 C# 中的 MemoryMappedFiles 时遇到了一些问题。当我只使用 1 个进程时,它们工作得很好,但是当我尝试从不同的进程访问 mmf 文件时,我得到允许这样做的错误。 我有一个数
我正在学习本教程 here 我很难弄清楚如何将字符串“THIS IS A TEST MESSAGE”存储在内存映射文件中,然后将其从另一端拉出。本教程说使用字节数组。请原谅我,我是新手,先自己尝试。
我正在使用 MemoryMappedFile 在两个进程之间交换数据。所以我在两个过程中都创建/打开了这样的文件: MemoryMappedFile m_MemoryMappedFile = Memo
我有两个 .NET 4.0 WinForms 应用程序(主要)从共享的 MemoryMappedFiles 读取地理数据。最终用户可以自由启动其中一个应用程序或另一个应用程序,或同时运行这两个应用程序
如果我在同一个 MemoryMappedFile 中并行读写会发生什么?我是否有必要在阅读之前通过 Mutext 锁定它们,如 MSDN 上的示例所示? Memory-Mapped Files 最佳答
我有一个处理Excel文件(之前上传到服务器)的网络服务,涉及到很多数据库更新,需要相当长的时间。我想提供另一个 web 服务,可以调用它来检查这个过程的进度。它将进程的 ID(可能是 GUID)作为
我需要将应用程序“A”中的变量值共享给同一系统上的不同应用程序。我只需要根据要求使用 MemoryMappedFiles。我创建了另一个简单的应用程序“B”,它从应用程序 A 中读取共享变量的值。但是
我有创建内存映射文件的代码,如下所示: using (Mutex mutex = new Mutex(false, CoordinatorMutexName)) { mutex.WaitOne
我有一组大型对象(超过 20GB),我需要从应用程序快速访问它们。 到目前为止,我已经在应用程序启动时从磁盘读取这些文件到 RAM。这是一项昂贵的任务,因为文件被反序列化为内存中的对象。但是,在加载这
如何使用 MemoryMappedFile 读取文件字节并将其放入 byte[] 数组? 最佳答案 假设您只想读取文件的一部分,这样的事情应该可行: long offset = 0x10000000;
是否可以结合使用 MemoryMappedFile 和 FileSystemWatcher?换句话说,如何为 FileSystemWatcher 的构造函数获取内存映射文件的路径: new FileS
我的任务是实现一个搜索功能,该功能将搜索几个大型(几 MB)日志文件并返回包含关键字的行。日志文件不断被添加到池中,因此每次搜索都必须是动态的。 创建 MemoryMappedFile 是否有意义?对
在 C# 4.0 中,MemoryMappedFile 有几个工厂方法:CreateFromFile、CreateNew、CreateOrOpen 或 打开现有。如果 MemoryMappedFile
正如标题所说;我可以依赖 MemoryMappedFile 来创建一个全为零的文件吗?我已经通过读取一些新创建的文件进行了测试,但这种“测试”似乎是徒劳的,尽管我还没有看到非零字节。 是否有任何我遗漏
下面的代码抛出这个异常: “该进程无法访问文件 '\filename',因为它正被另一个进程使用。” 很公平,但是关闭阅读器和/或 mmf 以便删除文件的正确方法是什么?我认为 MemoryMappe
我用 MemoryMappedFile 做了一个简单的测试 msdn说: 2 个进程,1 个内存映射文件: 第一个进程添加字符串“1” 第一个进程等待 第二个进程添加字符串“2”并终止 第一个进程现在
我是一名优秀的程序员,十分优秀!