/*
* Encog(tm) Core v3.4 - Java Version
* http://www.heatonresearch.com/encog/
* https://github.com/encog/encog-java-core
* Copyright 2008-2016 Heaton Research, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* For more information on Heaton Research copyrights, licenses
* and trademarks visit:
* http://www.heatonresearch.com/copyright
*/
package org.encog.util.file;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.encog.EncogError;
/**
* Directory utilities.
*
* @author jheaton
*/
public final class Directory {
/**
* Default buffer size for read/write operations.
*/
public static final int BUFFER_SIZE = 1024;
/**
* Copy the specified file.
*
* @param source
* The file to copy.
* @param target
* The target of the copy.
*/
public static void copyFile(final File source, final File target) {
try {
final byte[] buffer = new byte[Directory.BUFFER_SIZE];
// open the files before the copy
final FileInputStream in = new FileInputStream(source);
final FileOutputStream out = new FileOutputStream(target);
// perform the copy
int packetSize = 0;
while (packetSize != -1) {
packetSize = in.read(buffer);
if (packetSize != -1) {
out.write(buffer, 0, packetSize);
}
}
// close the files after the copy
in.close();
out.close();
} catch (final IOException e) {
throw new EncogError(e);
}
}
/**
* Delete a directory and all children.
*
* @param path
* The path to delete.
* @return True if successful.
*/
public static boolean deleteDirectory(final File path) {
if (path.exists()) {
final File[] files = path.listFiles();
for (final File element : files) {
if (element.isDirectory()) {
Directory.deleteDirectory(element);
} else {
if (!element.delete()) {
throw new EncogError("Failed to delete: "
+ element.toString() + "\nFile may be in use.");
}
}
}
}
return (path.delete());
}
/**
* Read the entire contents of a stream into a string.
*
* @param is
* The input stream to read from.
* @return The string that was read in.
*/
public static String readStream(final InputStream is) {
try {
final StringBuffer sb = new StringBuffer(1024);
final BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
final char[] chars = new char[Directory.BUFFER_SIZE];
int numRead = 0;
while ((numRead = reader.read(chars)) > -1) {
sb.append(new String(chars, 0, numRead));
}
reader.close();
return sb.toString();
} catch (final IOException e) {
throw new EncogError(e);
}
}
/**
* Read the entire contents of a stream into a string.
*
* @param filename
* The input stream to read from.
* @return The string that was read in.
*/
public static String readTextFile(final String filename) {
try {
final StringBuffer sb = new StringBuffer(1024);
final BufferedReader reader = new BufferedReader(new FileReader(
filename));
final char[] chars = new char[Directory.BUFFER_SIZE];
int numRead = 0;
while ((numRead = reader.read(chars)) > -1) {
sb.append(new String(chars, 0, numRead));
}
reader.close();
return sb.toString();
} catch (final IOException e) {
throw new EncogError(e);
}
}
/**
* Private constructor.
*/
private Directory() {
}
}