All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.cristalise.kernel.utils.FileStringUtility Maven / Gradle / Ivy

/**
 * This file is part of the CRISTAL-iSE kernel.
 * Copyright (c) 2001-2015 The CRISTAL Consortium. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published
 * by the Free Software Foundation; either version 3 of the License, or (at
 * your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; with out even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
 * License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this library; if not, write to the Free Software Foundation,
 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 *
 * http://www.fsf.org/licensing/licenses/lgpl.html
 */
package org.cristalise.kernel.utils;

//Java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.StringTokenizer;
import java.util.Vector;

/**************************************************************************
 *
 * @author $Author: abranson $ $Date: 2004/10/20 14:10:21 $
 * @version $Revision: 1.31 $
 **************************************************************************/
public class FileStringUtility
{
	/**************************************************************************
	 * Reads a file and converts it to String
	 **************************************************************************/
	static public String file2String(File file) throws FileNotFoundException, IOException
	{
		FileInputStream fis = new FileInputStream(file);
		byte[] bArray = (byte[]) Array.newInstance(byte.class, (int) file.length());
		Logger.msg(8, "FileStringUtility.file2String() - Reading file '" + file.getAbsolutePath()+"'");

		fis.read(bArray, 0, (int) file.length());
		fis.close();

		Logger.msg(9, "FileStringUtility.file2String() - file '" + file.getAbsolutePath() + "' read.");

		return new String(bArray);
	}

	/**************************************************************************
	 * Reads a file and converts it to String
	 **************************************************************************/
	static public String file2String(String fileName) throws FileNotFoundException, IOException
	{
		return file2String(new File(fileName));
	}

	/**************************************************************************
	 * Reads a file and converts it to String
	 **************************************************************************/
	static public String url2String(java.net.URL location) throws IOException
	{
        BufferedReader in = new BufferedReader(new InputStreamReader(location.openStream(), "UTF-8"));
        StringBuffer strbuf = new StringBuffer();
        String line = in.readLine();
        while (line != null) {
        	strbuf.append(line).append('\n');
        	line = in.readLine();
        }
		return strbuf.toString();
	}

	/**************************************************************************
	 * Reads a file and converts each line to String[]
	 **************************************************************************/
	static public String[] file2StringArray(File file) throws FileNotFoundException, IOException
	{
		FileReader fr = new FileReader(file);
		BufferedReader buf = new BufferedReader(fr);
		Vector lines = new Vector();
		String thisLine = null;
		while ((thisLine = buf.readLine()) != null)
			lines.addElement(thisLine);
		buf.close();
		String[] lineArray = new String[lines.size()];
		for (int i = 0; i < lines.size(); i++)
			lineArray[i] = lines.get(i);
		return lineArray;
	}

	/**************************************************************************
	 * Reads a file and converts it to String[]
	 **************************************************************************/
	static public String[] file2StringArray(String fileName) throws FileNotFoundException, IOException
	{
		return file2StringArray(new File(fileName));
	}

	/**************************************************************************
	 * Saves a string to a text file
	 **************************************************************************/
	static public void string2File(File file, String data) throws FileNotFoundException, IOException
	{
		FileWriter thisFile = new FileWriter(file);
		BufferedWriter thisFileBuffer = new BufferedWriter(thisFile);

		Logger.msg(9, "FileStringUtility.string2File() - writing file '" + file.getAbsolutePath()+"'");

		thisFileBuffer.write(data);
		thisFileBuffer.close();

		Logger.msg(9, "FileStringUtility.string2File() - file '" + file.getAbsolutePath() + "' complete.");
	}

	/**************************************************************************
	 * Saves a string to a text file
	 **************************************************************************/
	static public void string2File(String fileName, String data) throws FileNotFoundException, IOException
	{
		string2File(new File(fileName), data);
	}

	/**************************************************************************
	 * checks for existing directory
	 **************************************************************************/
	static public boolean checkDir(String dirPath)
	{
		File dir = new File(dirPath);

		if (dir.isFile())
		{
			Logger.error("FileStringUtility.checkDir() - '" + dir.getAbsolutePath() + "' is a file.");
			return false;
		}
		else if (!dir.exists())
		{
			Logger.msg(9, "FileStringUtility.checkDir() - directory '" + dir.getAbsolutePath() + "' does not exist.");
			return false;
		}

		return true;
	}

	/**************************************************************************
	 * creating a new directory
	 **************************************************************************/
	static public boolean createNewDir(String dirPath)
	{
		File dir = new File(dirPath);

		if (dir.isFile())
		{
			Logger.error("FileStringUtility.createNewDir() - '" + dir.getAbsolutePath() + "' is a file.");
			return false;
		}
		else if (dir.exists())
		{
			Logger.msg(8, "FileStringUtility.createNewDir() - '" + dir.getAbsolutePath() + "' already exists.");
			return false;
		}
		else
		{
			if (!dir.mkdirs())
			{
				Logger.error("FileStringUtility - Could not create new directory '" + dir.getAbsolutePath() + "'");
				return false;
			}
		}
		return true;
	}

	/**************************************************************************
	 * deleting a existing directory
	 **************************************************************************/
	static public boolean deleteDir(String dirPath)
	{
		File dir = new File(dirPath);

		if (!checkDir(dirPath))
		{
			Logger.msg(8, "FileStringUtility.deleteDir() - directory '" + dir.getAbsolutePath() + "' does not exist.");
			return false;
		}

		if (!dir.delete())
		{
			//prints the possible reason
			if (dir.list().length != 0)
			{
				Logger.error("FileStringUtility.deleteDir() - cannot delete non-empty directory '" + dir.getAbsolutePath() + "'");
			}
			else
			{
				Logger.error("FileStringUtility.deleteDir() - directory '" + dir.getAbsolutePath() + "' could not be deleted.");
			}
			return false;
		}

		return true;
	}

	/**************************************************************************
	 * deleting a existing directory with its structure
	 *
	 * @param dirPath the directory which should be deleted
	 * @param force if true forces to delete the entry (ie. the dirPath) even if
	 * it is a file
	 * @param recursive if true deletes the complete directory structure
	 **************************************************************************/
	static public boolean deleteDir(String dirPath, boolean force, boolean recursive)
	{
		File dir = new File(dirPath);
		File files[];

		if (!dir.exists())
		{
			Logger.error("FileStringUtility.deleteDir() - directory '" + dir.getAbsolutePath() + "' does not exist.");
			return false;
		}

		if (dir.isFile())
		{

			if (force)
			{ //delete the entry even if it is a file
				dir.delete();
				return true;
			}
			else
			{
				Logger.error("FileStringUtility.deleteDir() - '" + dir.getAbsolutePath() + "' was a file.");
				return false;
			}
		}

		if (recursive)
		{
			files = dir.listFiles();

			for (File file : files)
				deleteDir(file.getAbsolutePath(), true, true);
		}

		return deleteDir(dirPath);
	}

	/**************************************************************************
	 * List all file names in the directory recursively, relative to the
	 * starting directory.
	 *
	 * @param dirPath starting directory
	 * @param recursive goes into the subdirectories
	 **************************************************************************/
	static public ArrayList listDir(String dirPath, boolean withDirs, boolean recursive)
	{
		ArrayList fileNames = new ArrayList();
		File dir = new File(dirPath);
		File files[];
		String fileName;

		if (!checkDir(dirPath))
		{
			Logger.msg(8, "FileStringUtility.listDir() - directory '" + dir.getAbsolutePath() + "' does not exist.");
			return null;
		}

		files = dir.listFiles();

		for (File file : files) {
			fileName = file.getName();

			if (file.isFile())
			{
				fileNames.add(dirPath + "/" + fileName);
			}
			else
			{
				if (recursive)
					fileNames.addAll(listDir(dirPath + "/" + fileName, withDirs, recursive));

				if (withDirs)
					fileNames.add(dirPath + "/" + fileName);
			}
		}

		return fileNames;
	}

	/**************************************************************************
	 * Open a URL or File as an InputStream
	 **************************************************************************/
	static public InputStream openTextStream(String source)
	{
		java.io.InputStream in = null;
		java.net.URL url = null;

		// Try to open URL connection first
		try
		{
			try
			{
				url = new URL(source);
				in = url.openStream();
			}
			catch (MalformedURLException e)
			{
				// Try to open plain file, if `configFile' is not a
				// URL specification
				in = new FileInputStream(source);
			}
		}
		catch (java.io.IOException ex)
		{
			Logger.error("FileStringUtility.openTextStream() - could not load text stream:" + source);
		}
		return in;
	}

	/**************************************************************************
	 * Load the contents of the configuration file
	 **************************************************************************/
	static public java.util.Properties loadConfigFile(String configFile)
	{
		java.io.BufferedInputStream bin = null;
		java.io.InputStream in = openTextStream(configFile);
		java.util.Properties props = new java.util.Properties();

		if (in != null)
		{
			try
			{
				bin = new java.io.BufferedInputStream(in);
				props.load(bin);
				in.close();
			}
			catch (IOException ex)
			{
				Logger.error("FileStringUtility.loadConfigFile() - could not load configuration file '" + configFile+"'");
			}
		}
		return props;
	}

	/**************************************************************************
	 * Load the contents of the language file
	 * *************************************************************************/
	static public Hashtable loadLanguageFile(String configFile)
	{
		try
		{
			String language = FileStringUtility.file2String(configFile);
			Hashtable props = new Hashtable();
			StringTokenizer tok = new StringTokenizer(language, "\n");
			while (tok.hasMoreTokens())
			{
				String t = tok.nextToken();
				int sep = t.indexOf("=");
				if (sep >0)props.put(t.substring(0,sep),t.substring(sep+1));
			}
			return props;
		}
		catch (Exception e)
		{
			Logger.error("FileStringUtility.loadLanguageFile() - could not load language file '" + configFile+"'");
			Logger.error(e);
			return new Hashtable();
		}

	}

	/**************************************************************************
	 * Load the contents of the configuration file
	 **************************************************************************/
	static public void appendConfigFile(java.util.Properties props, String configFile)
	{
		java.io.BufferedInputStream bin = null;
		java.io.InputStream in = openTextStream(configFile);

		if (in != null)
		{
			try
			{
				bin = new java.io.BufferedInputStream(in);
				props.load(bin);
				in.close();
			}
			catch (java.io.IOException ex)
			{
    			Logger.error("FileStringUtility.appendConfigFile() - could not append configuration file '" + configFile+"'");
			}
		}
	}
    public static String convert(String init)
    {
        if (init==null) return null;
        return init
            .replace('\'', '_')
            .replace('\\', '_')
            .replace('/', '_')
            .replace('\"', '_')
            .replace(':', '_')
            .replace('*', '_')
            .replace('?', '_')
            .replace('<', '_')
            .replace('>', '_')
            .replace('|', '_')
            .replace('(', '[')
            .replace(')', ']')
            .replace(',','_');    }
    public static String replaceall(String src,String from,String to)
    {
        StringBuffer tmp=new StringBuffer(src);
        int length = from.length();
        int index = tmp.toString().indexOf(from);
        while (index>0)
        {
            tmp.replace(index,index+length,to);
            index = tmp.toString().indexOf(from);
        }
        return tmp.toString();
    }
    public static String toAlphaNum(String source)
    {
        byte[] sourceb = source.getBytes();
        for (int i=0;i'9'&&sourceb[i]<'A')||(sourceb[i]>'Z'&&sourceb[i]<'_')||sourceb[i]>'z')
                sourceb[i]='_';
        }
        return new String(sourceb);

    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy