作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用bsdtar将包含许多(百万)个xml文件的.tar.gz
文件的内容通过管道传输到stdout。
目前,我正在使用的命令是:
$ bsdtar -x -f <file.tar.gz> -O | ...
struct FileIter<'a> {
buf_reader: StdinLock<'a>
}
impl FileIter<'_> {
fn next_file<'a>(&mut self, buf: &'a mut Vec<u8>) -> Option<&'a [u8]> {
buf.clear();
loop {
match self.buf_reader.read_until(b'?', buf) {
// This is the file deliminator
// <?xml version="1.0" encoding="UTF-8"?>\n
Ok(0) => { break None; }
Ok(_) => {
let buf_len = buf.len();
if buf_len >= 37 {
if &buf[buf_len - 37..buf_len] ==
b"<?xml version=\"1.0\" encoding=\"UTF-8\"?" {
buf.truncate(buf_len - 37);
if buf.len() > 2 {
break Some(&buf[2..]);
}
}
}
}
Err(err) => {
println!("{:?}", err);
break None;
}
}
}
}
}
bsdtar中是否有一个选项可以指定文件分隔符字节?还是在Rust中有一种更通用的方法可以对所有文件起作用?
最佳答案
使用Lambda Fairy的注释,我几乎可以使用tar条板箱文档中的确切示例:
Cargo.toml
...
[dependencies]
tar = "0.4.30"
flate2 = "1.0.19"
main.rs
extern crate tar;
use std::fs::File;
use std::io::prelude::*;
use tar::Archive;
use flate2::read::GzDecoder;
fn main() {
let path = "file.tar.gz";
let tar_gz = File::open(path).unwrap();
let tar = GzDecoder::new(tar_gz);
let mut a = Archive::new(tar);
for file in a.entries().unwrap() {
// Make sure there wasn't an I/O error
let mut file = file.unwrap();
// Inspect metadata about the file
println!("{:?}", file.header().path().unwrap());
println!("{}", file.header().size().unwrap());
// files implement the Read trait
let mut s = String::new();
file.read_to_string(&mut s).unwrap();
println!("{}", s);
}
}
关于xml - bsdtar文件分隔符字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65283638/
昨晚我想开始玩 docker 但无法正常工作。我会运行简单的命令 docker pull base下载 98M 的数据需要时间。然后它会提示几行 ./usr/blah/foobar bsdtar: F
我正在参加 Udacity 的类(class),该类(class)要求我在我的系统上设置虚拟机。我已经下载并安装了 Virtual Box 和 Vagrant。当我尝试运行命令 vagrant up
我在 Ubuntu 12.04.2 LTS 中安装了 vagrant 和 virtual box。 ( Vagrant 版本 1.2.1)。我下载了 vagrant box 并执行了 vagrant
作为自动化部署管道的一部分,我正在创建一个 tar.gz文件 maven-assembly-plugin然后用 python 的 tarfile 解压它模块。 提取失败,但出现以下异常: Traceb
我是一名优秀的程序员,十分优秀!