当前位置: 首页 > 面试题库 >

需要zip存档条目中的io.ReaderAt(该条目是嵌套的.xlsx文件)

夏侯林
2023-03-14
问题内容

让我以我已经知道excel 2007文件本身就是.zip文件(已重命名为.xlsx)的事实为开头。

好的,现在您知道这是交易。我正在尝试从内存中的.zip存档中提取Excel 2007文件。我不能(而是,我 真的
不想)将整个存档提取到磁盘,然后从那里使用.xlsx文件。

问题在于,我们读取excel
2007文件的方法需要ReadAt方法(例如io.ReaderAt定义的方法)。不幸的是,archtml" target="_blank">hive
/
zip包公开了一个zip文件条目的接口,该接口仅返回io.ReadCloser。

有什么办法可以解决这种情况?同样,我想在内存中完成所有操作,而无需刷新到磁盘。


问题答案:

因为ZIP格式不允许在不首先解压缩整个文件的情况下实现ReadAt,所以您需要精确地做到这一点。

这并不意味着您必须将其保存到磁盘上,而是可以将其解压缩到内存中并Readerbytes软件包中使用它来进行处理:

// ReadAll reads from readCloser until EOF and returns the data as a []byte
b, err := ioutil.ReadAll(readCloser) // The readCloser is the one from the zip-package
if err != nil {
    panic(err)
}

// bytes.Reader implements io.Reader, io.ReaderAt, etc. All you need!
readerAt := bytes.NewReader(b)


 类似资料:
  • 我使用Minizip API来压缩和解压我的档案文件。我有一个要求,即在解压缩后立即从zip中删除zip条目。 如果zip归档文件有多个zip条目,我可以在解压缩后立即删除特定的zip条目,然后使用剩余的zip条目压缩归档文件。我可以用一个临时拉链来实现这一点。 但是当我在zip存档中有一个文件时,我只能在完全提取后删除zip。。。。对于这种情况,有没有一种优化方法,可以将zip条目分块提取和删除

  • 我知道,如果创建并写入zip文件,我会将ZipOutputStream环绕在OutputStream(或子类)周围,如下所示: fos=new FileOutputStream(fileName) zOut=new ZipOutputStream(fos); 我还知道如何创建zip文件,以及需要指定何时添加新条目和何时关闭条目。我想做的是加密存档中的文件,但保持存档未加密,这样条目仍然很容易找到。

  • 我想用几天时间解决一个问题 当我运行应用程序时,出现以下错误: 更详细地说(这里它说:simple-xml-2.7.1.jar,但我有一个类似于图中的simple-cxml-2.3.4.jar) 关联的ProGuard文件为空。 图书馆在哪里(我正在使用外部图书馆) 我的项目版本: 我的模块:android-ngn-stack build.gradle 我的模块:应用程序构建。我认为有问题的地方

  • 我正试图用Firestore数据库进行分页。有没有一种方法让我找到我的Firestore中的文档数量从我的网站使用Javascript,以便我可以编码我的(prev)和(next)按钮进行相应的分页?

  • Position是排行榜中的位置,1是得分最高的用户 GameBoard类有两个方法: submitScore(String uid,int score)每个玩家调用这个方法将他的分数提交到游戏板上。每个玩家/用户只有一个条目,因此,如果玩家多次调用此方法,则存储其最新得分 GetLeaderBoard(字符串uid) 上述代码的问题: 何时(理想情况下,在submitScore()期间)以及如何

  • null 有人也遇到这个问题吗?如果是这样,有人能帮我吗(我已经在这个问题上破了2天了!)?谢了!