Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.FileReader;
- import java.io.IOException;
- import java.net.HttpURLConnection;
- import java.net.MalformedURLException;
- import java.net.URL;
- public class GameUpdater {
- /*
- * Simple Game Updater.
- * TODO: getVersionFromURL needs to delete the .TMP after use!
- * UPLOAD_DIRECTORY is where the .JAR and .TXT (Version file) are located.
- *
- * The version.txt file should only contain "0.0.0.1" (your version id)
- *
- * Notes: .JAR file name (uploaded to the server) should be in the layout provided:
- * example: http://www.yourwebsite.co.nf/releases/my_game_0.0.0.1.JAR
- */
- // The current version of the game.
- private static final String GAME_VERSION = "0.0.0.1";
- // The games name
- private static final String GAME_NAME = "Block_Tamer_Client_";
- // The upload directory
- private static final String UPLOAD_DIRECTORY = "http://www.javatools.co.nf/releases/";
- // A ByteBuffer for reading bytes.
- private static byte[] BYTE_BUFFER = new byte[1024];
- /**
- * Main entry point into the application.
- * @param args The arguments (NONE) passed via the user.
- */
- public static void main(String[] args) {
- try {
- new GameUpdater();
- } catch (MalformedURLException e) {
- e.printStackTrace(); // malformed url (missing headers?)
- } catch (FileNotFoundException e) {
- e.printStackTrace(); // the version file or .jar file cannot be located.
- } catch (IOException e) {
- e.printStackTrace(); // there was a error while reading/writing.
- }
- }
- public GameUpdater() throws MalformedURLException, IOException, FileNotFoundException {
- System.out.println("Current client version is: " + GAME_VERSION);
- // obtain the current version from the file.
- String version = getVersionFromUrl(UPLOAD_DIRECTORY + "version.txt");
- System.out.println("Most recent uploaded game jar is version: " + version);
- // is the client version out dated?
- boolean outdatedClient = !(new String("" + GAME_VERSION).equals(new String("" + version)));
- if (!outdatedClient) {
- System.out.println("Your client does not need to be updated ^_^");
- return;
- }
- /*
- * At this point it's safe to assume the client is out dated.
- */
- // The updated .JAR
- final String jarLocation = UPLOAD_DIRECTORY + GAME_NAME + version + ".jar";
- // The downloaded .JAR save location (Updated)
- final String downloadedJarLocation = GAME_NAME + version + ".jar";
- System.out.println("Your client is out dated, downloading version " + version+ " updates... (" + getURLSizeInKB(jarLocation) + " kb)");
- // download the new .jar
- File newlyDownloadedJar = saveJarFromURL(jarLocation, downloadedJarLocation);
- System.out.println("New Jar has been downloaded to: "+ newlyDownloadedJar.getAbsolutePath());
- }
- private File saveJarFromURL(String urlLocation, String saveLocation)
- throws MalformedURLException, IOException, FileNotFoundException {
- /*
- * Initialize the Input Stream. (Downloading from remote system / server)
- */
- BufferedInputStream in = new BufferedInputStream(new URL(urlLocation).openStream());
- /*
- * Initialize the Output Stream. (Downloading on local system / pc)
- */
- File savedFile = new File(saveLocation);
- BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(savedFile));
- /*
- * Begin the download.
- */
- int inCount;
- while ((inCount = in.read(BYTE_BUFFER, 0, BYTE_BUFFER.length)) != -1) {
- out.write(BYTE_BUFFER, 0, inCount);
- }
- /*
- * Close the Input/Output streams.
- */
- out.flush();
- out.close();
- in.close();
- return savedFile;
- }
- @SuppressWarnings("resource")
- private String getVersionFromUrl(String string) throws MalformedURLException, IOException {
- /*
- * Initialize the Input Stream. (Downloading from remote system / server)
- */
- BufferedInputStream in = new BufferedInputStream(new URL(string).openStream());
- /*
- * Initialize the Output Stream. (Downloading on local system / pc)
- */
- File savedFile = new File("version.txt.tmp");
- BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(savedFile));
- /*
- * Begin the download.
- */
- int inCount;
- while ((inCount = in.read(BYTE_BUFFER, 0, BYTE_BUFFER.length)) != -1) {
- out.write(BYTE_BUFFER, 0, inCount);
- }
- /*
- * Close the Input/Output streams.
- */
- out.flush();
- out.close();
- in.close();
- // after the version data has been saved, read it and delete the file.
- String version = "";
- if (savedFile.exists()) {
- System.out.println("Checking version data....");
- version = new BufferedReader(new FileReader(savedFile)).readLine();
- // TODO: delete the .TMP file
- }
- return version;
- }
- /* Obtaining the files size in kilobytes */
- public static Double getURLSizeInKB(String urlStr) {
- double contentLength = 0;
- try {
- URL url = new URL(urlStr);
- HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
- contentLength = httpConn.getContentLength();
- httpConn.disconnect();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- return contentLength;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement