Golang-将文件系统嵌入二进制文件;与库一起使用

李·本森(Lee Benson):

我正在使用go.rice将嵌入式文件系统存储在Go二进制文件中。这非常适合推送到生产环境(即单个二进制分发),并将所有“文件”访问权限保留在内存中。

我遇到的问题是第三方库,这些库旨在通过传入文件名字符串直接从文件系统中加载外部文件(而不是使我能够抽象文件加载的通用Reader接口)

有什么方法可以创建可与Go的标准库os / io工具一起使用的内存文件系统,从而绕过将资源存储在二进制文件之外的需求吗?

我可以将字节转储到tmp文件中,将其传递给libs,然后删除...但是看起来很乱。如果可能,希望保留在内存中的访问权限。

不一定非要go.rice ...任何其他嵌入机制来保持这种清晰/单一的文件分发?

fuz:

对不起,那是不可能的。os软件包是平台操作系统API之上的一个薄包装。您可以执行以下操作:

  1. 用于go.rice在您的二进制文件中创建嵌入式文件系统。
  2. 在运行时:将嵌入文件复制到一个临时位置(您可以os.TempDir()用来找到一个合适的位置来放置您的临时目录)
  3. 使用临时路径将文件名传递给第三方代码。
  4. 在程序退出时,清理临时目录。

或者,您可以要求第三方代码的开发人员包括一个额外的API,该API接受一个io.Reader代替文件名的名称。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将文件嵌入Golang二进制文件?

如何强制golang将文件链接到我的二进制文件中?

golang二进制文件未在mips上运行

从编译的二进制文件中获取golang版本

golang-1.7二进制文件在哪里?

为Github构建Golang发布二进制文件

在Golang中读取二进制.fbx文件

用于构建Golang二进制文件的Docker映像

Heroku上的Golang二进制文件

将多个图像打包到GOLANG二进制文件中

Golang Dep:在一个源代码树中有多个二进制文件

在github上发布基于golang的二进制文件,并使用“ go get”安装

如何使用Golang获取发布的二进制数据的文件名?

如何检查golang二进制文件是否使用--ldflags =“ -s -w”进行编译

Golang二进制文件无法在gopath src文件夹之外工作

从BLOB文件系统中读取二进制文件以在Rhino中与javascript一起使用

在golang中创建静态二进制文件所需的标志

如何在Golang中的软件包中构建二进制文件?

如何为所有用户安装golang二进制文件

如何在GoLang程序中运行二进制文件?

如何/在何处执行生成svg的golang二进制文件

为golang静态二进制文件构建,部署,推送docker映像

golang在正在运行的二进制文件/进程上执行命令

Golang二进制搜索

使用Jenkins将二进制文件与JAR文件一起发布到Maven工件

Golang os.Open是否可以将表单文件与动态文件一起使用

Golang二进制文件如何以及为什么显示有关错误的文件和行信息

将文件的二进制内容推送到std :: string以便与Google的Snappy一起使用

将Golang1.11与模块一起使用时,Protobuf导入“找不到文件”