import java.io.*;
import java.util.*;

class EasyFileAccess{

	/**
	 * Liest den Inhalt einer Datei aus und speichert ihn in einem String-Array,
	 * sollte die Datei nicht existieren oder ein anderer Fehler auftreten, dann
	 * gibt die Methode ein leeres Array zurück.
	 * 
	 * @param filename Pfad zu der Datei in Form eines Strings, also z.B. "hallo.txt" oder "/etc/fstab", ...
	 * @return String-Array wobei die Einträge im Array die Zeilen der Datei beinhalten
	 */
	public static String[] getFileContent(String filename){
		ArrayList<String> stringList = new ArrayList<String>();
		try{
			BufferedReader bfReader =  new BufferedReader( 
					new InputStreamReader( new FileInputStream(filename)));
			String line = bfReader.readLine();
			while(line != null){
				stringList.add(line);
				line = bfReader.readLine();
			}
		} catch(Exception e){
			//e.printStackTrace();
			System.err.println(e.getMessage());
			String[] emptyArray = new String[0];
			return emptyArray;
		}
		String[] result = convertListToArray(stringList);
		return result;
	}
	
	/**
	 * Hilfsmethode um eine ArrayListe zu einem String-Array zu konvertieren.
	 * @param list ArrayList, welche beliebige Strings beinhaltet
	 * @return String-Array, welches die Elemente der ArrayList beinhaltet
	 */
	private static String[] convertListToArray(ArrayList<String> list){
		int size = list.size();
		String[] result = new String[size];
		for(int i = 0; i < size; i++){
			result[i] = list.get(i);
		}
		return result;
	}

	/**
	 * Schreibt einen String-Array in eine Datei. 
	 * @param filename : Pfad zu der Datei in Form eines Strings, also z.B. "hallo.txt" oder "/etc/fstab", ...
	 * @param data String-Array, welches in die angegebene Datei geschrieben werden soll.
	 * @return
	 */
	public static boolean writeArrayToFile(String filename, String[] data){
		BufferedWriter bufferedWriter;
		try {
			// Datei zum schreiben öffnen
			bufferedWriter = 	new BufferedWriter(
								new OutputStreamWriter(
								new FileOutputStream(filename)));
		
			// Array Elementenweise in Datei schreiben
			for (int i = 0; i < data.length; i++) {
				bufferedWriter.write(data[i]);
				bufferedWriter.newLine();
			}
			bufferedWriter.flush();
		
		} catch (Exception e) {
			// Fehlerbehandlung
			e.printStackTrace();
			return false;
		}
		return true;		
	}

}
