java io軟體試用次數練習
阿新 • • 發佈:2018-11-27
模擬一個場景,一款軟體的試用次數是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(); } } } }
配置檔案儲存在工程目錄下: