updatemanager.java

来自「java 开发的sip软电话 源码 jain sip」· Java 代码 · 共 143 行

JAVA
143
字号
package net.java.mais.update;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Vector;

import net.java.mais.common.NetworkAddressManager;
import net.java.mais.common.PropertiesDepot;
import net.java.mais.common.Utils;

public class UpdateManager extends Thread {

	private boolean updated = false; 
	
	public UpdateManager(){
	}

	public boolean isUpdated(){
		return updated;
	}
	
	public void run(){
		PropertiesDepot.loadProperties();
		Vector downloads = new Vector();
		boolean ok = true;
		String str[];
		try{
		str=check();
			if(str!=null){
				for(int i=1;i<str.length;i++)				
				if(!download(str[i],System.getProperty("EXEPATH")+File.separator+"update"+File.separator+(new File(str[i]).getName()))){
					for(int j=1;j<str.length;j++)
						delete(System.getProperty("EXEPATH")+File.separator+"update"+File.separator+(new File(str[i]).getName()));
					ok = false;
				}				
				if(ok){
					PropertiesDepot.setProperty("net.java.mais.update.VERSION_UPDATE",str[0]);
					PropertiesDepot.storeProperties();					
				}
			}
		}catch(Exception e){
			System.out.println("DOWNLOADS: "+e.toString());
		}finally{
			System.out.println("UP TO DATE");
			updated = true;
		}
		System.out.println("DOWNLOADS");
	}
	
	private boolean download(String src, String dst){
		FileOutputStream fp = null;
		int chunks = 0;
		File file = null;
		try{			
			String sendURL = src;
			file = new File(dst);
			new File(file.getParent()).mkdirs();
			file.createNewFile();
			fp = new FileOutputStream(file);
			URL posting = new URL(sendURL);
			InputStream in = posting.openStream();
			byte b[] = new byte[1200];
				for(int v=in.read(b);v>-1;v=in.read(b),chunks++)
					fp.write(b,0,v);
			fp.close();
			}catch(Exception e){
				try{
					fp.close();
					file.delete();
					System.out.println("DELETED: "+file.getName());
				}catch(Exception ee){
					System.out.println("ERRO DELETE: "+e.toString());
					file.deleteOnExit();
				}				
				System.out.println("ERRO DOWN: "+e.toString());
				System.out.println(dst);
				return false;
			}finally{
			}
			return (chunks>0);
	}
	
	private boolean delete(String dst){
		try{			
			File file = new File(dst);
			file.delete();
			return true;
			}catch(Exception e){
				System.out.println("ERRO DOWNLOAD DELETE: "+e.toString());
				System.out.println(dst);
				return false;
			}
	}
	
	private String[] check(){		
		String sendURL=Utils.getProperty("net.java.mais.update.VERSION_URL");
		System.out.println("SENDURL: "+sendURL);
		String versions[]=getVersion(sendURL);
		
		if(!versions[0].equals(Utils.getProperty("net.java.mais.update.VERSION_UPDATE"))){
			System.out.println(versions[0]);
		return versions;	
		}
		return null;
		
	}
	
	private String[] getVersion(String url){
		String str="";
		Vector list = new Vector();
		NetworkAddressManager.setProxy();
		
		try{
		System.out.println("URL: "+url);
		URL posting = new URL(url);
		BufferedReader in = new BufferedReader(new InputStreamReader(posting.openStream()));
			for(str = in.readLine();str!=null&&!str.equals("");str=in.readLine()){
				System.out.println("VRS: "+str);
				list.add(str);
			}
		in.close();
		
		String versions[] = new String[list.size()];
		
		list.copyInto(versions);
		
		return versions;
		}catch(Exception e){
			System.out.println("ERRO VERSION : "+e.toString()+" "+url);
			return null;
		}
	}
	
	public static void main(String args[]){	
		UpdateManager um = new UpdateManager();
	}
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?