我使用go.rice在Go二进制文件中存储嵌入式文件系统。这非常适合推动生产(即单个二进制分发),并保留所有文件'在内存中访问。
我遇到的问题是第三方库,它们旨在通过传入文件名字符串直接从文件系统加载外部文件(而不是,例如,一个允许我使用的通用Reader接口)抽象文件加载)
是否有某种方法可以创建与Go的标准库os / io工具配合使用的内存中文件系统,从而避免了将资产存储在二进制文件之外的需要?
我可以将字节转储到tmp文件,将其传递给libs,然后删除......但这看起来很麻烦。如果可能的话,宁愿继续在内存中访问。
不必go.rice ...任何其他嵌入机制来保持这种清晰/单一文件分发?
答案 0 :(得分:0)
抱歉,这是不可能的。 os
包是平台操作系统API顶部的瘦包装器。你能做的是:
go.rice
在二进制文件中创建嵌入式文件系统。os.TempDir()
获取合适的位置来制作临时目录)或者,您可以请求第三方代码的开发人员添加一个额外的API,该API接受io.Reader
而不是文件名。