1. 程式人生 > >java io軟體試用次數練習

java io軟體試用次數練習

模擬一個場景,一款軟體的試用次數是10,超過試用次數,再次使用會提示超過試用次數

分析,需要先將試用次數寫入到一個配置檔案中,為了防止使用者修改,對檔案加密處理下(異或),然後每次執行程式會讀取配置檔案,先解密,判斷使用者試用次數是否超過10次,如果沒超過10次,將試用次數做自減運算,再加密後寫入到配置檔案

package chen_Chapter8_io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class TrialTest {
	public static void main(String[] args) {
//		encode();
		decode();

	}
//從配置檔案讀取資訊,解密後判斷是否超過試用次數,不超過時,將試用次數自減,再加密儲存,超過時,提示使用者超過試用次數
	private static void decode() {
		BufferedInputStream bis = null;
		BufferedOutputStream bos = null;
		try {
			bis = new BufferedInputStream(new FileInputStream("config.ini"));
			int temp = bis.read();
			temp = temp ^ 54;
			if (temp > 0 && temp <= 10) {

				System.out.println("您的使用次數還剩餘" + temp + "次");
				temp--;
				bos = new BufferedOutputStream(new FileOutputStream("config.ini"));
				bos.write(temp ^ 54);
				bos.flush();
			} else {
				System.out.println("您的使用次數已達到10次");
			}

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if (bis != null) {
					bis.close();
				}
				if (bos != null) {
					bos.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
	}
//將試用次數寫入配置檔案,執行一次就可以了
	private static void encode() {
		BufferedOutputStream bos = null;
		try {
			bos = new BufferedOutputStream(new FileOutputStream("config.ini"));
			// 對試用次數做加密處理
			bos.write(10 ^ 54);
			bos.flush();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				// 避免空指標異常
				if (bos != null) {
					bos.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}

配置檔案儲存在工程目錄下:

原文:http://www.monkey1024.com/javase/626