So I have an Automatic Client Updater, but the problem is that it won't update the new version in the cache because it pulls the version ID from the cache. It's suppose to increase it by 0.1 but it doesn't. How come?

Code:
public class Update {

	public String CLIENT_URL = "xxxxxxxx";
	public String VERSION_URL = "xxxxxxx";
	public String VERSION_FILE = SignLink.getCacheLocation()+"version2.dat";
	
	public String DESKTOP_PATH = System.getProperty("user.home")
			+ System.getProperty("file.separator") + "Desktop"
			+ System.getProperty("file.separator");

	Client client;
	boolean active;
	double version;
	
	public Update(Client client) {
		this.client = client;
		this.active = true;
	}
	
	@SuppressWarnings("resource")
	public double getCurrentVersion(){
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(VERSION_FILE)));
			return Double.parseDouble(br.readLine());
		} catch (Exception e) {
			return 0.1;
		}
	}
	
	public void run() {
		while(active) {
			try {
				setText(0, "Checking client version");
				BufferedReader reader = new BufferedReader(new InputStreamReader(new URL(VERSION_URL).openStream()));
				String line = null;
				while((line = reader.readLine()) != null) {
					if(line.startsWith("//"))
						continue;
					String[] tokens = line.split("=");
					String key = tokens[0];
					String value = tokens[1];
					if(key.equals("state")) {
						if(!value.equalsIgnoreCase("active")
								&& !value.equalsIgnoreCase("inactive")
									|| value.equalsIgnoreCase("inactive")) {
							active = false;
							break;
						}
					} else if(key.equals("version")) {
						try { 
							version = Double.parseDouble(value);
						} catch (NumberFormatException nfe) {
							setText(0, "Error connecting to host");
							active = false;
							break;
						}
					}
				}
				reader.close();
				if(version != getCurrentVersion()) {
					download();
					OutputStream out = new FileOutputStream(VERSION_FILE);
					out.write(String.valueOf(version).getBytes());
					out.flush();
					out.close();
				}
				active = false;
			} catch (Exception e) {
				setText(0, "Fatal error updating client");
			}
		}
	}
	
	void setText(int percent, String text) {
		client.drawLoadingText(percent, text);
	}
	
	void download() {
		try {
			final String path = DESKTOP_PATH + "Name V" + version + ".jar";
			URL url = new URL(CLIENT_URL);
			HttpURLConnection http = (HttpURLConnection) url.openConnection();
			long fileSize = http.getContentLengthLong();
			BufferedInputStream bufferedInputStream = new BufferedInputStream(new URL(CLIENT_URL).openStream());
			FileOutputStream fileOuputStream = new FileOutputStream(path);
			BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOuputStream);
			int read;
			int total = 0;
			byte[] data = new byte[1024];
			while((read = bufferedInputStream.read(data)) != -1) {
				bufferedOutputStream.write(data, 0, read);
				total += read;
				if(fileSize <= 0 || total <= 0) {
					setText(100, "Downloading Client");
					continue;
				}
				int percent = (int)(total / (fileSize / 100));
				if(percent < 0)
					percent = 0;
				setText(percent, "Downloading Client");
			}
			bufferedInputStream.close();
			bufferedOutputStream.close();
			alert("Message", "A copy of the new client has been placed on your desktop.", 3);
			Runtime.getRuntime().exec(new String[] {"java", "-jar", path});
			Runtime.getRuntime().exit(0);
		} catch (Exception e) {
			handleException(e);
			System.exit(0);
			//e.printStackTrace();
		}
	}
	
	@SuppressWarnings("unused")
	private void handleException(Exception e){
		StringBuilder strBuff = new StringBuilder();
		strBuff.append("Please screenshot this message to a staff member.\r\n\r\n");
        StringBuilder append = strBuff.append(e.getClass().getName()).append(" \"").append(e.getMessage()).append("\"\r\n");
		for(StackTraceElement s : e.getStackTrace())
			strBuff.append(s.toString()).append("\r\n");
		alert("Exception [" + e.getClass().getSimpleName() + "]", strBuff.toString(), 2);
	}

	private void alert(String title, String msg, int type) {
		switch (type) {
		case 1:
			JOptionPane.showMessageDialog(null, msg, title,
					JOptionPane.PLAIN_MESSAGE);
			break;
		case 2:
			JOptionPane.showMessageDialog(null, msg, title,
					JOptionPane.ERROR_MESSAGE);
			break;
		case 3:
			JOptionPane.showMessageDialog(null, msg, title,
					JOptionPane.INFORMATION_MESSAGE);
			break;
		}
	}

}