public GpxCacher(SourceInfo inInfo)
	{
		_sourceInfo = inInfo;
		_strings = new String[inInfo.getNumPoints()];
		_pointNum = 0;
		// Should be a gpx file, but might be raw, zipped or gzipped
		File gpxFile = inInfo.getFile();
		String fileName = gpxFile.getName().toLowerCase();
		if (gpxFile.exists() && gpxFile.canRead())
		{
			GpxSlicer slicer = new GpxSlicer(this);
			InputStream istream = null;
			BufferedInputStream bstream = null;
			try {
				if (fileName.endsWith(".gpx") || fileName.endsWith(".xml")) {
					istream = new FileInputStream(inInfo.getFile());
				}
				else if (fileName.endsWith(".zip")) {
					istream = getZipInputStream(inInfo.getFile());
				}
				else if (fileName.endsWith(".gz")) {
					istream = new GZIPInputStream(new FileInputStream(inInfo.getFile()));
				}
				else {
					System.out.println("GpxCacher unrecognised file type: " + inInfo.getFile().getName());
				}
				if (istream != null) {
					bstream = new BufferedInputStream(istream);
					slicer.slice(bstream);
					bstream.close();
				}
			} catch (Exception e) {
				// TODO: Handle errors here with a list of warnings?
				e.printStackTrace();
			}
		}
	}