/**
* Copyright (C) 2008 Progress Software, Inc. All rights reserved.
* http://fusesource.com
*
* The software in this package is published under the terms of the AGPL license
* a copy of which has been included with this distribution in the license.txt file.
*/
package org.fusesource.cloudmix.common.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public final class FileUtils {
public static final int BUFFER_SIZE = 1024;
private static final Log LOGGER = LogFactory.getLog(FileUtils.class);
private FileUtils() { /* Utility classes should not have a public constructor */
}
public static File createDirectory(File parentDir, String path) {
File dir = parentDir == null ? new File(path) : new File(parentDir, path);
return createDirectory(dir);
}
public static File createDirectory(File dir) {
if (!dir.exists()) {
LOGGER.info("Creating work directory " + dir);
if (!dir.mkdirs()) {
LOGGER.error("failed to make work directory " + dir);
return null;
}
}
return dir;
}
public static void deleteDirectory(File dir) {
LOGGER.info("deleting directory " + dir);
File[] files = dir.listFiles();
if (files != null) {
for (File f : files) {
if (f.isDirectory()) {
deleteDirectory(f);
} else {
f.delete();
}
}
dir.delete();
}
}
public static void deleteFile(File file) {
LOGGER.info("deleting file " + file);
if (!file.delete()) {
LOGGER.warn("failed to delete file " + file);
}
}
public static void copy(InputStream is, OutputStream os) throws IOException {
copy(is, os, BUFFER_SIZE);
}
public static void copy(InputStream is, OutputStream os, int bufferSize) throws IOException {
final byte[] buffer = new byte[bufferSize];
long total = 0;
int n = is.read(buffer);
while (n != -1) {
total += n;
os.write(buffer, 0, n);
n = is.read(buffer);
}
LOGGER.info("Copied " + total + " bytes");
is.close();
os.close();
}
public static String readFile(String path) throws IOException {
return readFile(new File(path));
}
public static String readFile(File file) throws IOException {
StringBuilder sb = new StringBuilder();
BufferedReader reader = new BufferedReader(new FileReader(file));
char[] chars = new char[BUFFER_SIZE];
int length;
while ((length = reader.read(chars)) > 0) {
sb.append(chars, 0, length);
}
reader.close();
return sb.toString();
}
}