/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
package org.apache.airavata.common.utils;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.Writer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class IOUtil {
private static final Logger logger = LoggerFactory.getLogger(IOUtil.class);
/**
* @param path
* @param content
* @throws IOException
*/
public static void writeToFile(String content, String path) throws IOException {
logger.debug("Path:" + path + " Content:" + content);
FileWriter fw = new FileWriter(path);
writeToWriter(content, fw);
}
/**
* @param content
* @param file
* @throws IOException
*/
public static void writeToFile(String content, File file) throws IOException {
FileWriter fw = new FileWriter(file);
writeToWriter(content, fw);
}
/**
* @param inputStream
* @param file
* @throws IOException
*/
public static void writeToFile(InputStream inputStream, File file) throws IOException {
FileOutputStream outputStream = new FileOutputStream(file);
byte[] bytes = new byte[1024];
int len;
while ((len = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, len);
}
outputStream.close();
}
/**
* Writes a specified String to a specified Writer.
*
* @param content
* The content to write
* @param writer
* The specified Writer
*
* @throws IOException
*/
public static void writeToWriter(String content, Writer writer) throws IOException {
writer.write(content);
writer.close();
}
/**
* Returns the content of a specified file as a String.
*
* @param path
* @return the content of a specified file as a String
* @throws IOException
*/
public static String readFileToString(String path) throws IOException {
FileReader read = new FileReader(path);
return readToString(read);
}
/**
* Returns the content of a specified file as a String.
*
* @param file
* @return the content of a specified file as a String
* @throws IOException
*/
public static String readFileToString(File file) throws IOException {
FileReader reader = new FileReader(file);
return readToString(reader);
}
/**
* Returns a String read from a specified InputStream.
*
* @param stream
* The specified InputStream
* @return The String read from the specified InputStream
* @throws IOException
*/
public static String readToString(InputStream stream) throws IOException {
return readToString(new InputStreamReader(stream));
}
/**
* Returns a String read from a specified Reader.
*
* @param reader
* The specified Reader
* @return The String read from the specified Reader
* @throws IOException
*/
public static String readToString(Reader reader) throws IOException {
char[] cbuf = new char[1024];
StringBuilder sbuf = new StringBuilder();
int len;
while ((len = reader.read(cbuf)) != -1) {
sbuf.append(cbuf, 0, len);
}
return sbuf.toString();
}
/**
* @param file
* @return The byte array
* @throws IOException
*/
public static byte[] readToByteArray(File file) throws IOException {
return readToByteArray(new FileInputStream(file));
}
/**
* @param inputStream
* @return The byte array.
* @throws IOException
*/
public static byte[] readToByteArray(InputStream inputStream) throws IOException {
byte[] buf = new byte[1024];
ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream();
int len;
while ((len = inputStream.read(buf)) != -1) {
byteArrayStream.write(buf, 0, len);
}
return byteArrayStream.toByteArray();
}
/**
* @param path
* @return <code>true</code> if and only if the file or directory is successfully deleted; <code>false</code>
* otherwise
*/
public static boolean deleteDirectory(File path) {
if (path.exists()) {
File[] files = path.listFiles();
for (File file : files) {
if (file.isDirectory()) {
deleteDirectory(file);
} else {
file.delete();
}
}
}
return path.delete();
}
/**
* Gets the extension of a specified file.
*
* @param file
* the specified file.
* @return the extension of the file in lower case if there is an extension; null otherwise
*/
public static String getExtension(File file) {
String ext = null;
String name = file.getName();
int index = name.lastIndexOf('.');
if (index > 0 && index < name.length() - 1) {
ext = name.substring(index + 1).toLowerCase();
}
return ext;
}
}