FileUtil.java Source code

Java tutorial

Introduction

Here is the source code for FileUtil.java

Source

/*
Software Architecture Design Patterns in Java
by Partha Kuchana 
    
Auerbach Publications
    
*/

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;

public class FileUtil {

    DataOutputStream dos;

    /*
     * Utility method to write a given text to a file
     */
    public boolean writeToFile(String fileName, String dataLine, boolean isAppendMode, boolean isNewLine) {
        if (isNewLine) {
            dataLine = "\n" + dataLine;
        }

        try {
            File outFile = new File(fileName);
            if (isAppendMode) {
                dos = new DataOutputStream(new FileOutputStream(fileName, true));
            } else {
                dos = new DataOutputStream(new FileOutputStream(outFile));
            }

            dos.writeBytes(dataLine);
            dos.close();
        } catch (FileNotFoundException ex) {
            return (false);
        } catch (IOException ex) {
            return (false);
        }
        return (true);

    }

    /*
     * Reads data from a given file
     */
    public String readFromFile(String fileName) {
        String DataLine = "";
        try {
            File inFile = new File(fileName);
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(inFile)));

            DataLine = br.readLine();
            br.close();
        } catch (FileNotFoundException ex) {
            return (null);
        } catch (IOException ex) {
            return (null);
        }
        return (DataLine);

    }

    public boolean isFileExists(String fileName) {
        File file = new File(fileName);
        return file.exists();
    }

    public boolean deleteFile(String fileName) {
        File file = new File(fileName);
        return file.delete();
    }

    /*
     * Reads data from a given file into a Vector
     */

    public Vector fileToVector(String fileName) {
        Vector v = new Vector();
        String inputLine;
        try {
            File inFile = new File(fileName);
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(inFile)));

            while ((inputLine = br.readLine()) != null) {
                v.addElement(inputLine.trim());
            }
            br.close();
        } // Try
        catch (FileNotFoundException ex) {
            //
        } catch (IOException ex) {
            //
        }
        return (v);
    }

    /*
     * Writes data from an input vector to a given file
     */

    public void vectorToFile(Vector v, String fileName) {
        for (int i = 0; i < v.size(); i++) {
            writeToFile(fileName, (String) v.elementAt(i), true, true);
        }
    }

    /*
     * Copies unique rows from a source file to a destination file
     */

    public void copyUniqueElements(String sourceFile, String resultFile) {
        Vector v = fileToVector(sourceFile);
        v = MiscUtil.removeDuplicates(v);
        vectorToFile(v, resultFile);
    }

} // end FileUtil

class MiscUtil {

    public static boolean hasDuplicates(Vector v) {
        int i = 0;
        int j = 0;
        boolean duplicates = false;

        for (i = 0; i < v.size() - 1; i++) {
            for (j = (i + 1); j < v.size(); j++) {
                if (v.elementAt(i).toString().equalsIgnoreCase(v.elementAt(j).toString())) {
                    duplicates = true;
                }

            }

        }

        return duplicates;
    }

    public static Vector removeDuplicates(Vector s) {
        int i = 0;
        int j = 0;
        boolean duplicates = false;

        Vector v = new Vector();

        for (i = 0; i < s.size(); i++) {
            duplicates = false;
            for (j = (i + 1); j < s.size(); j++) {
                if (s.elementAt(i).toString().equalsIgnoreCase(s.elementAt(j).toString())) {
                    duplicates = true;
                }

            }
            if (duplicates == false) {
                v.addElement(s.elementAt(i).toString().trim());
            }

        }

        return v;
    }

    public static Vector removeDuplicateDomains(Vector s) {
        int i = 0;
        int j = 0;
        boolean duplicates = false;
        String str1 = "";
        String str2 = "";

        Vector v = new Vector();

        for (i = 0; i < s.size(); i++) {
            duplicates = false;
            for (j = (i + 1); j < s.size(); j++) {
                str1 = "";
                str2 = "";
                str1 = s.elementAt(i).toString().trim();
                str2 = s.elementAt(j).toString().trim();
                if (str1.indexOf('@') > -1) {
                    str1 = str1.substring(str1.indexOf('@'));
                }
                if (str2.indexOf('@') > -1) {
                    str2 = str2.substring(str2.indexOf('@'));
                }

                if (str1.equalsIgnoreCase(str2)) {
                    duplicates = true;
                }

            }
            if (duplicates == false) {
                v.addElement(s.elementAt(i).toString().trim());
            }

        }

        return v;
    }

    public static boolean areVectorsEqual(Vector a, Vector b) {
        if (a.size() != b.size()) {
            return false;
        }

        int i = 0;
        int vectorSize = a.size();
        boolean identical = true;

        for (i = 0; i < vectorSize; i++) {
            if (!(a.elementAt(i).toString().equalsIgnoreCase(b.elementAt(i).toString()))) {
                identical = false;
            }
        }

        return identical;
    }

    public static Vector removeDuplicates(Vector a, Vector b) {

        int i = 0;
        int j = 0;
        boolean present = true;
        Vector v = new Vector();

        for (i = 0; i < a.size(); i++) {
            present = false;
            for (j = 0; j < b.size(); j++) {
                if (a.elementAt(i).toString().equalsIgnoreCase(b.elementAt(j).toString())) {
                    present = true;
                }
            }
            if (!(present)) {
                v.addElement(a.elementAt(i));
            }
        }

        return v;
    }

}// end of class