/******************************************************************************* * 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); } }