有没有一种方法可以读取tar文件格式的文件的时间戳,以便为未tarred文件设置相同的时间。
例如:Tar文件中有多个文件,我想读取一个文件上次修改的时间戳。
请找到下面使用的代码。
我正在使用apache commons:commons-compress-1.2.jar
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
public class UnTar {
public static void uncompressTarGZ(File tarFile, File dest) throws IOException {
dest.mkdir();
TarArchiveInputStream tarIn = null;
tarIn = new TarArchiveInputStream(
new GzipCompressorInputStream(
new BufferedInputStream(
new FileInputStream(
tarFile
)
)
)
);
TarArchiveEntry tarEntry = tarIn.getNextTarEntry();
// tarIn is a TarArchiveInputStream
while (tarEntry != null) {// create a file with the same name as the tarEntry
System.out.println("********"+tarEntry.getName());
File destPath = new File(dest, tarEntry.getName());
System.out.println("working: " + destPath.getCanonicalPath());
if (tarEntry.isDirectory()) {
destPath.mkdirs();
} else {
if(destPath.getName().endsWith(".xml") || destPath.getName().endsWith(".tp2")){
byte[] header = new byte[10];
tarIn.read(header);
int timestamp = header[4] & 0xFF |
(header[5] & 0xFF) << 8 |
(header[6] & 0xFF) << 16 |
(header[7] & 0xFF) << 24;
destPath.setLastModified(timestamp);
destPath.createNewFile();
destPath.setLastModified(tarEntry.getLastModifiedDate().getTime());
//byte [] btoRead = new byte[(int)tarEntry.getSize()];
byte [] btoRead = new byte[1024];
//FileInputStream fin
// = new FileInputStream(destPath.getCanonicalPath());
BufferedOutputStream bout =
new BufferedOutputStream(new FileOutputStream(destPath));
int len = 0;
while((len = tarIn.read(btoRead)) != -1)
{
bout.write(btoRead,0,len);
}
bout.close();
btoRead = null;
}
}
tarEntry = tarIn.getNextTarEntry();
}
tarIn.close();
}
public static void main(String[] args) throws IOException {
File tarFile = new File("D:/1_RealDoc_Classic/Work/RDC_927_ReconcileVendor_Util/Production_Samples/FSM_Files/ocwenamf.20150107210002.tar.gz");
File dest = new File("D:/1_RealDoc_Classic/Work/RDC_927_ReconcileVendor_Util/Production_Samples/FSM_Files/UnZipped");
uncompressTarGZ(tarFile, dest);
}
}
这个问题还不清楚,但是要将.tar.gz文件的修改时间设置为内存档的文件的最新修改时间,我使用以下方法:
#!/bin/tcsh -f
# set the mod time of a .tar.gz file to the mod time of the latest file within
foreach x ( $* )
touch -t `tar tvz --full-time -f $x |& egrep -v '^tar' | awk '{ print $4, $5 }' | sort | tail -1 | sed 's/ //g' | sed 's/-//g' | sed 's/://' | sed 's/:/./'` $x
end
我的 tar 文件位于以下位置: 使用 tar 命令: 命令显示我: 我的计划或更好的愿望是这样处理: 我只想要一个tar文件并将其存储到不同的目录……但是这个带有-C的命令不起作用…它提取tar的所有文件…… 我的问题是,是否可以只提取一个Tar文件,而不将提取到目录中??另一个问题:是否有可能只提取tar文件而不提取文件夹这可能是更好的方法,但我不知道如何。。。? 不,没有路径我就不能保存文件
我们看到ORC和带分区的ORC执行相同(有时我们看到B/W ORC分区和不带分区的ORC差别很小)。带分区的ORC会比ORC表现更好吗。带分区桶的ORC会比ORC分区表现更好吗?。我看到每个ORC分区文件都接近50-100 MB,ORC带外分区(每个文件大小为30-50 MB)。 **注:120 GB的Un压缩数据被压缩为17 GB的ORC文件格式
我在HDFS中有大量. gz文件,我正在尝试使用PigStorage加载它们来处理数据,我得到了以下异常 Java语言io。EOFException:组织的输入流意外结束。阿帕奇。hadoop。io。压紧解压缩流。在org上解压缩(DecompressorStream.java:137)。阿帕奇。hadoop。io。压紧解压缩流。在java上读取(DecompressorStream.java:7
问题内容: 我需要一些帮助来创建文件 我在过去的几个小时中尝试使用RandomAccessFile并尝试实现下一个逻辑: 获取文件对象 创建一个具有相似名称的临时文件(我如何确保将临时文件与给定的原始文件放置在同一位置?) 写入此文件 用临时文件替换磁盘上的原始文件(应使用原始文件名)。 我正在寻找一个简单的代码,谁喜欢使用RandomAccessFile,我只是不正确地解决这几个步骤。 编辑:好
gunzip 是一个使用广泛的解压缩命令,它用于解压被 gzip 压缩过的文件(扩展名为 .gz)。 对于解压被 gzip 压缩过的文件,还可以使用 gzip 自己,即 gzip -d 压缩包。 gunzip 命令的基本格式为: [root@localhost ~]# gunzip [选项] 文件 该命令常用的选项及含义如表 1 所示。 表 1 gunzip 命令常用选项及含义 选项 含义 -r
问题内容: 这就是问题所在。我有sample.gz文件,大小约为60KB。我想解压缩该文件的前2000个字节。我遇到了CRC检查失败的错误,我猜是因为gzip CRC字段出现在文件末尾,并且它需要整个gzip压缩文件进行解压缩。有办法解决这个问题吗?我不在乎CRC检查。即使由于CRC错误而无法解压缩,也可以。有没有办法解决这个问题并解压缩部分.gz文件? 我到目前为止的代码是 遇到的错误是 还可以