问题标签 [compound-file]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - IStorage 的复合文件实现是线程安全的吗?
我正在使用来自 C# (StgCreateDocfile) 的 IStorage 的复合文件实现。
如果我自己同步读取和写入,从多个线程访问一个 IStorage / IStream 实例是否安全?或者这里是否有任何可能有问题的 COM 问题?
例如,我可以安全地调用 EnumElements 来获取存储中的所有流,同时(并且来自不同的线程)创建和写入一个新流吗?
我已经为我的实现编写了一个压力测试,它没有显示任何问题,但我需要 100% 确定。我在 MSDN 文档中没有找到此信息。
c++ - 是否有 Windows 复合文件的开源替代方案?
我正在尝试将几个文件保存到一个容器文件中。这些文件可以稍后修改,这意味着容器可能必须扩大。用户应该只将此容器视为文件系统中的单个文件。该应用程序是用 C++ 编写并在 Windows 上运行,但文件也应该可以移植到其他平台。
容器格式的要求是:
1.大小:允许大于 4GB 的文件。
2.可移植性:在其他平台上打开容器文件应该是可行的。
3.性能:更改容器内的文件时,只有代表该特定文件的“块”可以更改。特别是,可能不会完全重写该文件。
4.结构:它应该提供一个目录结构,允许建立文件和目录的层次结构。
省略要求 1.) 和 2.) 复合文件(如 Word 和 Excel 使用的)非常适合。
当然,可以设计一个满足所有要求的 API,但我想知道是否已经有一些开源解决方案可以解决这个问题?
有什么建议么?
c - 用于 C 的开源嵌入式文件系统(或单文件虚拟文件系统,或结构化存储)库
我不确定这样的“通用”名称可能是什么。我正在寻找一个库,它为我提供了一种文件格式,可以将不同类型的二进制数据存储在一个扩展的单个文件中。
- 开源,非 GPL (LGPL ok)
- C接口
- 文件格式是单个文件
- 使用类似 POSIX 的文件 API 中的多个文件(或使用其他 API 中的多个“blob”)
- 文件/结构编辑就地完成
- 可靠第一,性能第二
示例包括:
上述问题:
- whefs 似乎不是很成熟,但最能描述我所追求的
- HDF、CDF、NetCDF 是可用的(也非常可靠和快速),但它们相当复杂,我不完全相信它们支持不透明的二进制“blob”
编辑:
忘了提另一个相关问题:
C/C++ 中的简单虚拟文件系统
另一个类似问题:
Windows 复合文件是否有开源替代方案?
编辑:
添加了就地编辑的条件。
编辑:
whefs 被: whio_epfs取代
python - 如何将文件的一部分视为文件本身?
我将数据存储在文件集合或单个复合文件中。复合文件是通过连接所有单独的文件形成的,然后在所有内容之前加上一个标题,该标题给出了组成部分的偏移量和大小。我想要一个类似文件的对象,它呈现复合文件的视图,其中视图仅代表一个成员文件。(这样,我可以拥有读取数据的函数,这些函数可以接受真实的文件对象或“视图”对象,而且他们不必担心任何特定数据集的存储方式。)哪个库会为我做这件事?
这个mmap
类看起来很有希望,因为它是由一个文件、一个长度和一个偏移量构成的,这正是我所拥有的,但是偏移量需要与底层文件系统的分配粒度保持一致,而我正在读取的文件不满足那个要求。该类的名称符合MultiFile
要求,但它是为电子邮件中的附件量身定制的,而且我的文件没有这种结构。
我最感兴趣的文件操作是read
,seek
和tell
. 我正在阅读的文件是二进制文件,因此面向文本的函数readline
并不next
那么重要。我可能最终也需要write
,但我现在愿意放弃该功能,因为我不确定附加应该如何表现。
excel - 使用 OpenMCDF 修改 xls 文件会导致输出损坏
我正在做一个需要编辑现有办公文件内容的项目。我正在使用开源库 OpenMCDF ( https://sourceforge.net/p/openmcdf ),它可以轻松访问复合 ole 文件中的数据。我发现它非常适合读取数据,但在写入数据时遇到问题。
我编写了一个小代码示例来演示以下问题(请注意,您需要更改文件路径)。在这种情况下,我采用一个特定的流 (./_VBA_PROJECT/VBA/dir) 并重写流的内容,将流截断 50 个字节。为了演示损坏,如果您使用 7zip 打开输出文件并尝试导出 dir 流,您会被告知 dir 流已损坏。
当您编写比原始流短的流时,问题似乎只是一个问题。添加更多字节似乎不会导致问题。
在这里的任何帮助将不胜感激。
c# - 调用 IStorage 的 EnumElements 时访问冲突
我正在阅读结构化存储文件。并试图获取根结构的所有子元素。但是这样做时我遇到了访问冲突异常。
这是本机方法,
这是我的调用代码。
请注意,如果我调用另一个方法,如果 IStorage,如 OpenStream,工作正常,
我在打开文件时尝试了不同的 STM 标志组合,但它不起作用。
c++ - LPSTREAM 无法读入 CString
我正在尝试使用 LPSTREAM 将文本读入 CString,但它似乎无法正常工作,这是我正在调用的代码:
当它读入字符串时,Visual Studio 会说 CString 中的数据已损坏。
复合存储的流内容如下:
我不完全确定我是否正确使用了 Read(),我该如何解决这个问题?
c++ - 如何使用 StgOpenStorageEx() 函数提取 .docx、.xlsx、.pptx 的文档属性?
我正在使用StgOpenStorageEx () 来获取标题、主题、标签、作者等文档属性。
我成功地获得了 .doc、.xls、.ppt 文件的所有这些属性。但是.docx、.xlsx、.pptx没有得到任何东西
StgOpenStorageEx() 已成功打开 .docx 文件,但未获取任何属性。为什么?
我有什么遗漏吗?
代码: