/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.util;
import java.io.File;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import com.opengamma.OpenGammaRuntimeException;
// NOTE kirk 2013-12-10 -- Before adding anything to this, check to see if
// the functionality you require is in another class or project
// (in particular IOUtils).
/**
* A collection of utility methods for working with files.
*/
public final class FileUtils {
/**
* A convenience reference to the java.io.tmpdir location.
*/
public static final File TEMP_DIR = new File(System.getProperty("java.io.tmpdir"));
private FileUtils() {
}
public static File copyResourceToTempFile(InputStream resource) {
return copyResourceToTempFile(null, resource);
}
public static File copyResourceToTempFile(InputStream resource, String fileName) {
return copyResourceToTempFile((String) null, resource, fileName);
}
public static File copyResourceToTempFile(String subdirName, InputStream resource) {
return copyResourceToTempFile(subdirName, resource, null);
}
public static File copyResourceToTempFile(String subdirName, InputStream resource, String fileName) {
File tempDir = TEMP_DIR;
if (!(subdirName == null)) {
tempDir = new File(TEMP_DIR, subdirName);
if (tempDir.exists()) {
if (!tempDir.isDirectory()) {
throw new IllegalStateException("" + tempDir + " already exists and is not a directory.");
}
} else {
tempDir.mkdirs();
}
}
return copyResourceToTempFile(tempDir, resource, fileName);
}
public static File copyResourceToTempFile(File tempDir, InputStream resource, String fileName) {
ArgumentChecker.notNull(resource, "resource");
File tempFile = null;
if (fileName == null) {
tempFile = new File(tempDir, "test-" + System.nanoTime());
} else {
tempFile = new File(tempDir, fileName);
}
if (tempFile.exists()) {
tempFile.delete();
}
try {
org.apache.commons.io.FileUtils.copyInputStreamToFile(resource, tempFile);
IOUtils.closeQuietly(resource);
} catch (Exception e) {
throw new OpenGammaRuntimeException("Unable to copy resource to " + tempFile, e);
}
tempFile.deleteOnExit();
return tempFile;
}
}