HADOOP-11179. Java untar should handle the case that the file entry comes without its parent directory entry. Contributed by Craig Welch.
This commit is contained in:
parent
2217e2f8ff
commit
a169051931
@ -952,6 +952,9 @@ Release 2.6.0 - UNRELEASED
|
||||
HADOOP-11163. MetricsSystemImpl may miss a registered source.
|
||||
(Chuan Liu via cnauroth)
|
||||
|
||||
HADOOP-11179. Java untar should handle the case that the file entry comes
|
||||
without its parent directory entry. (Craig Welch via zjshen)
|
||||
|
||||
Release 2.5.1 - 2014-09-05
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
@ -707,7 +707,7 @@ private static void unpackEntries(TarArchiveInputStream tis,
|
||||
TarArchiveEntry entry, File outputDir) throws IOException {
|
||||
if (entry.isDirectory()) {
|
||||
File subDir = new File(outputDir, entry.getName());
|
||||
if (!subDir.mkdir() && !subDir.isDirectory()) {
|
||||
if (!subDir.mkdirs() && !subDir.isDirectory()) {
|
||||
throw new IOException("Mkdirs failed to create tar internal dir "
|
||||
+ outputDir);
|
||||
}
|
||||
@ -720,8 +720,8 @@ private static void unpackEntries(TarArchiveInputStream tis,
|
||||
}
|
||||
|
||||
File outputFile = new File(outputDir, entry.getName());
|
||||
if (!outputDir.exists()) {
|
||||
if (!outputDir.mkdirs()) {
|
||||
if (!outputFile.getParentFile().exists()) {
|
||||
if (!outputFile.getParentFile().mkdirs()) {
|
||||
throw new IOException("Mkdirs failed to create tar internal dir "
|
||||
+ outputDir);
|
||||
}
|
||||
|
@ -619,7 +619,7 @@ public void testUnTar() throws IOException {
|
||||
OutputStream os = new FileOutputStream(simpleTar);
|
||||
TarOutputStream tos = new TarOutputStream(os);
|
||||
try {
|
||||
TarEntry te = new TarEntry("foo");
|
||||
TarEntry te = new TarEntry("/bar/foo");
|
||||
byte[] data = "some-content".getBytes("UTF-8");
|
||||
te.setSize(data.length);
|
||||
tos.putNextEntry(te);
|
||||
@ -634,8 +634,8 @@ public void testUnTar() throws IOException {
|
||||
// successfully untar it into an existing dir:
|
||||
FileUtil.unTar(simpleTar, tmp);
|
||||
// check result:
|
||||
assertTrue(new File(tmp, "foo").exists());
|
||||
assertEquals(12, new File(tmp, "foo").length());
|
||||
assertTrue(new File(tmp, "/bar/foo").exists());
|
||||
assertEquals(12, new File(tmp, "/bar/foo").length());
|
||||
|
||||
final File regularFile = new File(tmp, "QuickBrownFoxJumpsOverTheLazyDog");
|
||||
regularFile.createNewFile();
|
||||
|
Loading…
Reference in New Issue
Block a user