X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fload%2FFileCacher.java;fp=tim%2Fprune%2Fload%2FFileCacher.java;h=733754bd83c0d98cdab258020907f89f98017430;hb=312fec956e43f5d0a38617da5d0add9c62563e2c;hp=0000000000000000000000000000000000000000;hpb=db1c1602b89209f4c92e8bd12ad38cd243fb27c7;p=GpsPrune.git diff --git a/tim/prune/load/FileCacher.java b/tim/prune/load/FileCacher.java new file mode 100644 index 0000000..733754b --- /dev/null +++ b/tim/prune/load/FileCacher.java @@ -0,0 +1,125 @@ +package tim.prune.load; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; + +/** + * Class to load the contents of a file + * into an array for later retrieval + */ +public class FileCacher +{ + private File _file = null; + private String[] _contentArray = null; + + + /** + * Constructor + * @param inFile File object to cache + */ + public FileCacher(File inFile) + { + _file = inFile; + loadFile(); + } + + + /** + * Load the specified file into memory + */ + private void loadFile() + { + ArrayList contentList = new ArrayList(); + if (_file != null && _file.exists() && _file.canRead()) + { + BufferedReader reader = null; + try + { + reader = new BufferedReader(new FileReader(_file)); + String currLine = reader.readLine(); + while (currLine != null) + { + if (currLine.trim().length() > 0) + contentList.add(currLine); + currLine = reader.readLine(); + } + } + catch (IOException ioe) {} + finally + { + // close file ignoring errors + try + { + if (reader != null) reader.close(); + } + catch (Exception e) {} + } + } + // Convert into String array for keeps + int numLines = contentList.size(); + _contentArray = new String[numLines]; + for (int i=0; i getNumLines()) numToCopy = getNumLines(); + int size = numToCopy; + if (size < MIN_SNIPPET_SIZE) size = MIN_SNIPPET_SIZE; + String[] result = new String[size]; + // Copy Strings across + System.arraycopy(_contentArray, 0, result, 0, numToCopy); + // Chop Strings to max width if necessary + if (inMaxWidth > 10) + { + for (int i=0; i inMaxWidth) + result[i] = result[i].trim(); + if (result[i].length() > inMaxWidth) + result[i] = result[i].substring(0, inMaxWidth); + } + } + return result; + } + + /** + * @return the number of non-blank lines in the file + */ + public int getNumLines() + { + return _contentArray.length; + } + + + /** + * Clear the memory + */ + public void clear() + { + _file = null; + _contentArray = null; + } +}