⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 highscore.java

📁 java2应用开发指南第一版
💻 JAVA
字号:
//HighScore.java
import java.io.*;
import java.security.*;
import java.util.Hashtable;

public class HighScore
{
    private String gameName;
    private File highScoreFile;
	 //构造方法
    public HighScore(String gameName) 
    {
	    this.gameName = gameName;
       //访问控制权限设置
	    AccessController.doPrivileged(new PrivilegedAction() 
		{
	       public Object run() 
			{
		      String path = System.getProperty("user.home") +
		                 File.separator + 
		                 ".highscore";

		                 highScoreFile = new File(path);
		                 return null;
	      }
	    });
    }
    //设置内容
    public void setHighScore(final int score)
	             throws IOException
    {
	   //check permission first
	   SecurityManager sm = System.getSecurityManager();
	   if (sm != null) 
		{
	    sm.checkPermission(new HighScorePermission(gameName));
	   }

	   // need a doPrivileged block to manipulate the file
	   try
		{
	     	AccessController.doPrivileged(new PrivilegedExceptionAction() 
			{
		    	public Object run() throws IOException 
				{
		          Hashtable scores = null;
		          // try to open the existing file. Should have a locking
		          // protocol (could use File.createNewFile).
		          try
				 {
			        FileInputStream fis = 
			             new FileInputStream(highScoreFile);
			        ObjectInputStream ois = new ObjectInputStream(fis);
			        scores = (Hashtable) ois.readObject();
		         }
				catch (Exception e) 
				{
			          // ignore, try and create new file
		         }

		    	// if scores is null, create a new hashtable
			    if (scores == null)
				scores = new Hashtable(13);
	
			    // update the score and save out the new high score
			    scores.put(gameName, new Integer(score));
			    FileOutputStream fos = new FileOutputStream(highScoreFile);
			    ObjectOutputStream oos = new ObjectOutputStream(fos);
			    oos.writeObject(scores);
			    oos.close();
			    return null;
			}
		    });
		} catch (PrivilegedActionException pae) {
	    	throw (IOException) pae.getException();
		}
    }

    /**
     * get the high score. return -1 if it hasn't been set.
     *
     */
    public int getHighScore()
	throws IOException, ClassNotFoundException
    {
	//check permission first
	SecurityManager sm = System.getSecurityManager();
	if (sm != null) {
	    sm.checkPermission(new HighScorePermission(gameName));
	}

	Integer score = null;

	// need a doPrivileged block to manipulate the file
	try {
	     score = (Integer) AccessController.doPrivileged(
	                                new PrivilegedExceptionAction() {
		public Object run() 
		    throws IOException, ClassNotFoundException 
		{
		    Hashtable scores = null;
		    // try to open the existing file. Should have a locking
		    // protocol (could use File.createNewFile).
		    FileInputStream fis = 
			new FileInputStream(highScoreFile);
		    ObjectInputStream ois = new ObjectInputStream(fis);
		    scores = (Hashtable) ois.readObject();

		    // get the high score out
		    return scores.get(gameName);
		}
	    });
	} catch (PrivilegedActionException pae) {
	    Exception e = pae.getException();
	    if (e instanceof IOException)
		throw (IOException) e;
	    else
		throw (ClassNotFoundException) e;
	}
	if (score == null)
		return -1;
	else
		return score.intValue();
    }
    
    //main方法
    public static void main(String args[])
	 throws Exception 
    {
	     HighScore hs = new HighScore(args[1]);
	     if (args[0].equals("set")) 
{
	        hs.setHighScore(Integer.parseInt(args[2]));
	     }
else 
{
	         System.out.println("score = "+ hs.getHighScore());
	     }
    }
}

⌨️ 快捷键说明

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