package fi.otavanopisto.muikku.files;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.IOUtils;
public class TempFileUtils {
public static File getTempFile(String fileId) {
return new File(getTempDirectory(), fileId);
}
public static byte[] getTempFileData(String fileId) throws IOException {
File tempFile = TempFileUtils.getTempFile(fileId);
if (tempFile.exists()) {
FileInputStream inputStream = new FileInputStream(tempFile);
try {
return IOUtils.toByteArray(inputStream);
} finally {
inputStream.close();
}
}
return null;
}
public static File createTempFile() throws IOException {
File tempFile = new File(getTempDirectory(), generateUniqueFileId());
if (tempFile.createNewFile()) {
return tempFile;
}
throw new IOException("Could not create temp file");
}
public static void deleteTempFile(String fileId) {
File tempFile = new File(getTempDirectory(), fileId);
if (tempFile.exists()) {
tempFile.delete();
}
}
private static File getTempDirectory() {
return new File(System.getProperty("java.io.tmpdir"));
}
private static String generateUniqueFileId() {
File tempDirectory = getTempDirectory();
File file;
String fileName = null;
int counter = 0;
do {
fileName = DigestUtils.md5Hex(new StringBuilder()
.append(Thread.currentThread().getId())
.append('-')
.append(System.currentTimeMillis())
.append('-')
.append(counter)
.toString());
file = new File(tempDirectory, fileName);
counter++;
} while (file.exists());
return fileName;
}
}