public static TreeMap<Integer, Meter> read(String fileIn, TreeMap<Integer, Account> accountsReference){
		TreeMap<Integer, Meter> meters = new TreeMap<Integer, Meter>();
		File meterFile = new File(fileIn);
		try
		{
			Scanner in = new Scanner(meterFile);
			//Parse the meters file
			int meterID, accountID;
			
			boolean isDigital;
			
			//Variables for storing data from file for the meterReading object
			int readingValue;
			Date readingDate = new Date();

			//Sets up the formatting of a date throughout the file
			DateFormat formatter = new SimpleDateFormat("MM/dd/yy h:mm a z");			

			//The list of meter readings that we build and pass to the meter object on the fly
			Meter meter;

			while(in.hasNext())
			{
				//Stores the unique meterID of the meter
				accountID = Integer.parseInt(in.nextLine());
				meterID = Integer.parseInt(in.nextLine());

				isDigital = (in.nextInt() == 0) ? false : true;
				in.nextLine();
				
				//Parses the address and generates the meter in one step
				meter = new Meter(meterID, (isDigital) ? "Digital" : "Analog", Double.parseDouble(in.nextLine()), new Address( in.nextLine(), in.nextLine(), in.nextLine(), in.nextLine(), in.nextLine()));
				
				//Advances the writer past the "READINGS:" delimiter.
				in.nextLine();
				
				while(!in.hasNext("ENDREADINGS"))
				{
					readingValue = Integer.parseInt(in.nextLine());
					try {
						readingDate = (Date)formatter.parse(in.nextLine());
					} catch (ParseException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}

					//Append to Meter
					meter.addReading(new Meter_Reading(readingValue, readingDate), true);					
				}
				//Advances the writer past the "TAXES:" delimiter.
				in.nextLine();
				in.nextLine();
				
				while(!in.hasNext("ENDTAXES"))
				//while(!in.nextLine().equals("ENDTAXES"))
				{
					//Parse the tax from its name and rate; add it to the meter
					meter.addTax(new Taxes(in.nextLine(),Double.parseDouble(in.nextLine())));
				}				
				
				meters.put(meterID, meter);
				Account temp = accountsReference.get(accountID);
                                if(temp != null)
                                    temp.addMeter(meter);
                                else
                                    System.out.println("Could not find account for meter " + meterID);
				
				/* This is not implemented yet in Accounts
				 * 
				 * accountsReference.get(accountID).addMeter(meter);
				 */
				
				//Advances the writer past the end delimiter if necessary to get new info
				if(in.hasNext()){
					in.nextLine();
				}
				
			}
		}
		catch(FileNotFoundException e)
		{
			e.printStackTrace();
		}
		
		return meters;
	}