/******************************************************************************* * Copyright (c) 2000, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.core.internal.localstore; import java.io.*; /** * Given a target and a temporary locations, it tries to read the contents * from the target. If a file does not exist at the target location, it tries * to read the contents from the temporary location. * * @see SafeFileOutputStream */ public class SafeFileInputStream extends FilterInputStream { protected static final String EXTENSION = ".bak"; //$NON-NLS-1$ private static final int DEFAUT_BUFFER_SIZE = 2048; public SafeFileInputStream(File file) throws IOException { this(file.getAbsolutePath(), null); } /** * If targetPath is null, the file will be created in the default-temporary directory. */ public SafeFileInputStream(String targetPath, String tempPath) throws IOException { super(getInputStream(targetPath, tempPath, DEFAUT_BUFFER_SIZE)); } /** * If targetPath is null, the file will be created in the default-temporary directory. */ public SafeFileInputStream(String targetPath, String tempPath, int bufferSize) throws IOException { super(getInputStream(targetPath, tempPath, bufferSize)); } private static InputStream getInputStream(String targetPath, String tempPath, int bufferSize) throws IOException { File target = new File(targetPath); if (!target.exists()) { if (tempPath == null) tempPath = target.getAbsolutePath() + EXTENSION; target = new File(tempPath); } return new BufferedInputStream(new FileInputStream(target), bufferSize); } }