You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中读取用C#生成的压缩文件

在R语言中读取C#生成的Zip压缩文件方法

嘿,这事儿不难,我给你捋清楚怎么在R里读你用C#生成的这个压缩文件!先拆解下你的C#代码产物:你创建了一个名为0001.gff的Zip压缩包,里面还包含一个同名的条目,条目里是四个小端字节序的Int32数值(也就是1、2、3、4)——因为C#的BinaryWriter默认用小端字节序写数据,这一点很关键,读取时必须对应上。

下面给你两种实用的读取方案:

方法一:直接读取Zip条目内容(无需解压到本地)

这种方法更高效,不用生成临时文件,直接在内存里完成读取:

# 先安装并加载zip包(如果还没装的话)
install.packages("zip")
library(zip)

# 定义Zip文件路径
zip_file <- "0001.gff"

# 读取Zip包内的目标条目到二进制向量
entry_data <- zip::zip_read(zip_file, file = "0001.gff")

# 将二进制数据解析为Int32类型,注意指定小端字节序
result <- readBin(entry_data, what = integer(), n = 4, size = 4, endian = "little")

# 查看结果
print(result)
# 输出应该是:[1] 1 2 3 4

方法二:先解压再读取(适合需要保留文件的场景)

如果之后还要用到解压后的文件,可以先把Zip包解压到临时目录再读取:

# 定义Zip文件路径
zip_file <- "0001.gff"

# 创建临时目录存放解压后的文件
temp_folder <- tempdir()

# 解压Zip包到临时目录
unzip(zip_file, exdir = temp_folder)

# 拼接解压后文件的路径
target_file <- file.path(temp_folder, "0001.gff")

# 以二进制只读模式打开文件并读取
con <- file(target_file, "rb")
result <- readBin(con, what = integer(), n = 4, size = 4, endian = "little")
close(con)

# 查看结果
print(result)

重要注意事项

  • 字节序必须对应:如果你的C#代码没修改BinaryWriter的字节序,那一定要在readBin里指定endian = "little",不然会读出完全错误的数值(比如1会变成16777216)。要是后来改了C#代码用大端字节序,这里也要改成endian = "big"。
  • 确保文件路径正确:如果R的工作目录和文件所在目录不一样,记得写完整的文件路径,比如"C:/your-folder/0001.gff"。

内容的提问来源于stack exchange,提问作者vrige

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 19:22:38