]> gitweb.fperrin.net Git - GpsPrune.git/blob - src/tim/prune/load/FileCacher.java
Version 20.4, May 2021
[GpsPrune.git] / src / tim / prune / load / FileCacher.java
1 package tim.prune.load;
2
3 import java.io.BufferedReader;
4 import java.io.File;
5 import java.io.FileReader;
6 import java.io.IOException;
7 import java.util.ArrayList;
8
9 /**
10  * Class to load the contents of a file
11  * into an array for later retrieval
12  */
13 public class FileCacher extends ContentCacher
14 {
15         /**
16          * Constructor
17          * @param inFile File object to cache
18          */
19         public FileCacher(File inFile)
20         {
21                 loadFile(inFile);
22         }
23
24
25         /**
26          * Load the specified file into memory
27          */
28         private void loadFile(File inFile)
29         {
30                 ArrayList<String> contentList = new ArrayList<String>();
31                 if (inFile != null && inFile.exists() && inFile.canRead())
32                 {
33                         BufferedReader reader = null;
34                         try
35                         {
36                                 reader = new BufferedReader(new FileReader(inFile));
37                                 String currLine = reader.readLine();
38                                 if (currLine != null && currLine.startsWith("<?xml")) {
39                                         return; // it's an xml file, it shouldn't use this cacher
40                                 }
41                                 while (currLine != null)
42                                 {
43                                         if (currLine.indexOf('\0') >= 0)
44                                         {
45                                                 reader.close();
46                                                 return; // it's a binary file, shouldn't use this cacher
47                                         }
48                                         if (currLine.trim().length() > 0)
49                                                 contentList.add(currLine);
50                                         currLine = reader.readLine();
51                                 }
52                         }
53                         catch (IOException ioe) {}
54                         finally
55                         {
56                                 // close file ignoring errors
57                                 try
58                                 {
59                                         if (reader != null) reader.close();
60                                 }
61                                 catch (Exception e) {}
62                         }
63                 }
64                 setContents(contentList);
65         }
66 }