1 6 21 22 package de.schlichtherle.io.archive.tar; 23 24 import de.schlichtherle.io.archive.*; 25 import de.schlichtherle.io.archive.spi.*; 26 import de.schlichtherle.io.rof.*; 27 28 import java.io.*; 29 import java.util.logging.*; 30 31 import javax.swing.*; 32 33 42 public class TarDriver extends AbstractArchiveDriver { 43 44 51 public static final String ENCODING = "US-ASCII"; 52 53 58 public TarDriver() { 59 super(ENCODING, null, null); 60 } 61 62 70 public TarDriver(String encoding) { 71 super(encoding, null, null); 72 } 73 74 93 public TarDriver( 94 String encoding, 95 Icon openIcon, 96 Icon closedIcon) { 97 super(encoding, openIcon, closedIcon); 98 } 99 100 104 public ArchiveEntry createArchiveEntry( 105 final Archive archive, 106 final String entryName, 107 final ArchiveEntry blueprint) 108 throws CharConversionException { 109 ensureEncodable(entryName); 110 111 final TarEntry entry; 112 if (blueprint != null) { 113 if (blueprint instanceof TarEntry) { 114 entry = new TarEntry(entryName, (TarEntry) blueprint); 115 } else { 116 entry = new TarEntry(entryName); 117 entry.setTime(blueprint.getTime()); 118 } 119 } else { 120 entry = new TarEntry(entryName); 121 } 122 123 return entry; 124 } 125 126 public InputArchive createInputArchive( 127 final Archive archive, 128 final ReadOnlyFile rof) 129 throws IOException { 130 final InputStream in = createInputStream(rof); 131 try { 132 return createInputArchive(archive, in); 133 } finally { 134 in.close(); 135 } 136 } 137 138 150 protected InputStream createInputStream(ReadOnlyFile rof) 151 throws IOException { 152 return new ReadOnlyFileInputStream(rof); 153 } 154 155 167 protected InputArchive createInputArchive(Archive archive, InputStream in) 168 throws IOException { 169 return new TarInputArchive(archive, in); 170 } 171 172 public OutputArchive createOutputArchive( 173 final Archive archive, 174 final OutputStream out, 175 final InputArchive source) 176 throws IOException { 177 return new TarOutputArchive(out); 178 } 179 } 180 | Popular Tags |