001    package com.mockrunner.util.common;
002    
003    import java.io.File;
004    import java.io.FileNotFoundException;
005    import java.io.FileReader;
006    import java.net.URL;
007    import java.util.List;
008    
009    import com.mockrunner.base.NestedApplicationException;
010    
011    public class FileUtil
012    {
013        /**
014         * Reads all lines from a text file and adds them to a <code>List</code>.
015         * @param file the input file
016         * @return the <code>List</code> with the file lines
017         */
018        public static List getLinesFromFile(File file)
019        {
020            List resultList = null;
021            FileReader reader = null;
022            try
023            {
024                reader = new FileReader(file);
025                resultList = StreamUtil.getLinesFromReader(reader);
026            }
027            catch(FileNotFoundException exc)
028            {
029                throw new NestedApplicationException(exc);
030    
031            }
032            finally
033            {
034                if(null != reader)
035                {
036                    try
037                    {
038                        reader.close();
039                    }
040                    catch(Exception exc)
041                    {
042                        throw new NestedApplicationException(exc);
043                    }
044                }
045            }
046            return resultList;
047        }
048        
049        /**
050         * Tries to open the file from its absolute or relative path. If the file
051         * doesn't exist, tries to load the file with <code>getResource</code>.
052         * Returns <code>null</code> if the file cannot be found.
053         * @param fileName the file name
054         * @return the file as reader
055         */
056        public static File findFile(String fileName)
057        {
058            File file = new File(fileName);
059            try
060            {
061                if(file.exists() && file.isFile()) 
062                {
063                    return file;
064                }
065                URL fileURL = FileUtil.class.getClassLoader().getResource(fileName);
066                if (fileURL != null) return new File(fileURL.getFile());
067                fileURL = FileUtil.class.getResource(fileName);
068                if (fileURL != null) return new File(fileURL.getFile());
069                return null;
070            } 
071            catch(Exception exc)
072            {
073                throw new NestedApplicationException("Error while trying to find the file " + fileName, exc);
074            } 
075        }
076    }