blob: b609b50fcd22cdaf4ea77eabc7879aa6efa90599 [file] [log] [blame]
Stefan Bodewigb7095f32011-09-04 03:42:27 +00001/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
20package org.apache.commons.compress.compressors.pack200;
21
22import java.io.File;
23import java.io.FileInputStream;
24import java.io.FileOutputStream;
25import java.io.IOException;
26import java.io.InputStream;
27
28/**
29 * StreamSwitcher that caches all data written to the output side in
30 * a temporary file.
Gary D. Gregory2bd0dd42012-04-01 13:02:39 +000031 * @since 1.3
Stefan Bodewigb7095f32011-09-04 03:42:27 +000032 */
Stefan Bodewig8aeba822011-09-14 10:33:04 +000033class TempFileCachingStreamBridge extends StreamBridge {
Stefan Bodewigb7095f32011-09-04 03:42:27 +000034 private final File f;
35
Stefan Bodewig8aeba822011-09-14 10:33:04 +000036 TempFileCachingStreamBridge() throws IOException {
Stefan Bodewigb7095f32011-09-04 03:42:27 +000037 f = File.createTempFile("commons-compress", "packtemp");
38 f.deleteOnExit();
39 out = new FileOutputStream(f);
40 }
41
Stefan Bodewigb7095f32011-09-04 03:42:27 +000042 @Override
43 InputStream getInputView() throws IOException {
44 out.close();
45 return new FileInputStream(f) {
46 @Override
47 public void close() throws IOException {
48 super.close();
49 f.delete();
50 }
51 };
52 }
53}