package com.sysdeo.eclipse.tomcat;
/*
* (c) Copyright Sysdeo SA 2001, 2002.
* All Rights Reserved.
*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* Utility class for Files operation
*
* Use UTF-8 encoding for text file.
*/
public class FileUtil {
public static String readTextFile(File f) throws IOException {
StringBuffer buf = new StringBuffer();
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(f), "UTF-8"));
// BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
String inputLine;
while ((inputLine = in.readLine()) != null) {
buf.append(inputLine);
buf.append('\n');
}
in.close();
return buf.toString();
}
public static void toTextFile(File f, String content) throws IOException {
FileOutputStream out = new FileOutputStream(f);
out.write(content.getBytes("UTF-8"));
out.close();
}
public static void copy(String inputFilename, String outputFilename) throws IOException {
FileUtil.copy(new File(inputFilename), new File(outputFilename));
}
/**
* Copie un fichier vers un autre fichier ou un r�pertoire vers un autre r�pertoire
*/
public static void copy(File input, File output) throws IOException {
if(input.isDirectory() && output.isDirectory()) {
FileUtil.copyDir(input, output);
} else {
FileUtil.copyFile(input, output);
}
}
/**
* Copie un fichier vers un autre
*/
public static void copyFile(File inputFile, File outputFile) throws IOException {
BufferedInputStream fr = new BufferedInputStream(new FileInputStream(inputFile));
BufferedOutputStream fw = new BufferedOutputStream(new FileOutputStream(outputFile));
byte[] buf = new byte[8192];
int n;
while((n = fr.read(buf)) >= 0)
fw.write(buf,0,n);
fr.close();
fw.close();
}
/**
* Copie un r�pertoire dans un autre
*/
public static void copyDir(File inputDir, File outputDir) throws IOException {
File[] files = inputDir.listFiles();
for(int i=0; i<files.length; i++) {
File destFile = new File(outputDir.getAbsolutePath() + File.separator + files[i].getName());
if(!destFile.exists()) {
if(files[i].isDirectory()) {
destFile.mkdir();
}
}
FileUtil.copy(files[i], destFile);
}
}
/**
* return true if the directory contains files with the extension
*/
public static boolean dirContainsFiles(File dir, String extension, boolean recursive) {
File[] files = dir.listFiles();
for(int i=0; i<files.length; i++) {
if(files[i].isFile() && files[i].getName().endsWith(extension))
return true;
if(recursive && files[i].isDirectory())
return FileUtil.dirContainsFiles(files[i], extension, recursive);
}
return false;
}
/**
*
*/
public static String readPropertyInXMLFile(File file, String property) throws IOException {
String content = FileUtil.readTextFile(file);
int startTagIdx = content.indexOf("<" + property + ">");
int endTagIdx = content.indexOf("</" + property + ">");
if (startTagIdx == -1)
throw new IOException("Property " + property + " not found in file " + file);
return content.substring(startTagIdx + property.length() + 2, endTagIdx);
}
/**
* Recursive delete of a directory.<br>
* The directory itself will be deleted
*/
public static void removeDir(File dir) throws IOException {
File[] files = dir.listFiles();
for (int i = 0; i < files.length; i++) {
if(files[i].isDirectory()) {
FileUtil.removeDir(files[i]);
} else {
files[i].delete();
}
}
dir.delete();
}
}