如何读取包含NUL字符的文本文件?
解决包含NUL字符的文件读取问题
当文件包含NUL(\0)字符时,readChar()会因底层C字符串的特性截断内容并触发警告,你可以通过以下方法完整读取文件内容:
方法一:使用
readBin()读取二进制数据
直接以二进制模式读取所有字节,再转换为字符并处理NUL:# 获取文件大小,确保读取完整内容 file_size <- file.info("output.txt")$size # 读取为raw向量(保留所有字节,包括NUL) raw_content <- readBin("output.txt", what = "raw", n = file_size) # 转换为字符串(R字符串可存储NUL,但打印时可能显示截断,实际数据完整) char_content <- rawToChar(raw_content) # 可选:将NUL替换为可见标记,方便查看和处理 cleaned_content <- gsub("\0", "<NUL>", char_content, fixed = TRUE) # 或按NUL拆分内容,获取各段数据 split_sections <- strsplit(char_content, "\0", fixed = TRUE)[[1]]方法二:使用
scan()读取原始字节
通过scan()的raw模式读取所有字节,再进行转换:# 读取所有字节为raw向量 raw_data <- scan("output.txt", what = "raw", sep = "", quiet = TRUE) # 转换为字符串 full_content <- rawToChar(raw_data)
核心逻辑是绕过readChar()的C字符串截断限制,先以二进制形式完整读取所有数据,再根据需求处理NUL字符——无论是保留、替换还是拆分,都能获取文件中的全部关键信息。
内容的提问来源于stack exchange,提问作者Dan Chaltiel
相关产品推荐
相关产品推荐

