1. import java.io.*;
  2.  
  3. public class TryOut {
  4.  
  5. /**
  6. * IO流模拟软件试用次数的功能
  7. * 这里注意try里BufferedOutputStream不要和InputStream放在同一个try里,因为写入的时候他默认会清空原文件的值
  8. *
  9. * @param args
  10. */
  11. public static void main(String[] args) {
  12. try (
  13. BufferedInputStream bis = new BufferedInputStream(new FileInputStream("config.txt"))
  14. ) {
  15. int temp = bis.read();
  16. int count = temp ^ 66;
  17. if (count > 0 && count <= 3) {
  18. count--;
  19. System.out.println("您的试用次数还剩" + count + "次");
  20. BufferedOutputStream bos = null;
  21. try {
  22. bos = new BufferedOutputStream(new FileOutputStream("config.txt"));
  23. bos.write(count ^ 66);
  24. bos.flush();
  25. } catch (FileNotFoundException e) {
  26. e.printStackTrace();
  27. }
  28. } else {
  29. System.out.println("您的试用次数已用尽,请购买正版使用!");
  30. }
  31. } catch (FileNotFoundException e) {
  32. e.printStackTrace();
  33. } catch (IOException e) {
  34. e.printStackTrace();
  35. }
  36. }
  37.  
  38. /**
  39. * 初始试用次数方法
  40. */
  41. public static void code() {
  42. try (
  43. BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("config.txt"))
  44. ) {
  45. bos.write(3 ^ 66);
  46. bos.flush();
  47. } catch (FileNotFoundException e) {
  48. e.printStackTrace();
  49. } catch (IOException e) {
  50. e.printStackTrace();
  51. }
  52. }
  53. }

大致思路就是把试用次数加密写入到一个txt里,然后通过读取这个txt来让count自减,直到count为0的时候也就代表试用次数用尽了.

IO流实现模拟软件试用的功能的更多相关文章

  1. 代码实现:当我们下载一个试用版软件,没有购买正版的时候,每执行一次就会提醒我们还有多少次使用机会用学过的IO流知识,模拟试用版软件,试用10次机会,执行一次就提示一次您还有几次机会,如果次数到了提示请购买正版

    package com.loaderman.test; import java.io.BufferedReader; import java.io.FileReader; import java.io ...

  2. Java基础知识强化之IO流笔记09:File类功能

    详见如下: Android(java)学习笔记87:File类使用

  3. Java中的IO流(四)

    上一篇<Java中的IO流(三)>把IO流中的文件及目录操作的对象File类记录了一下,本篇把本不属性IO流但又和IO流有关系的一个对象作一下记录,此对象本属于集合框架里的一个子集,即Pr ...

  4. JavaEE基础(二十一)/IO流

    1.IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出. 2 ...

  5. day21<IO流+&FIle递归>

    IO流(字符流FileReader) IO流(字符流FileWriter) IO流(字符流的拷贝) IO流(什么情况下使用字符流) IO流(字符流是否可以拷贝非纯文本的文件) IO流(自定义字符数组的 ...

  6. java基础第十五篇之IO流和递归算法

    FileInputStream : 输入流 int available() : 一次读取所有的字节数 read() : 将文件上的字节读取到内存的数组中 FileOutputStream : 输出流 ...

  7. JavaEE基础(二十二)/IO流

    1.IO流(序列流) 1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推. 2.使用方式 整合两个: ...

  8. day22<IO流+>

    IO流(序列流) IO流(序列流整合多个) IO流(内存输出流) IO流(内存输出流之黑马面试题) IO流(对象操作流ObjecOutputStream) IO流(对象操作流ObjectInputSt ...

  9. Java中的IO流体系

    Java为我们提供了多种多样的IO流,我们可以根据不同的功能及性能要求挑选合适的IO流,如图10-7所示,为Java中IO流类的体系. 注:这里只列出常用的类,详情可以参考JDK API文档.粗体标注 ...

随机推荐

  1. junit所需要的jar包

    hamcrest-core-1.1.jar junit-4.12.jar http://central.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/ ...

  2. long int double float

    参考:https://blog.csdn.net/ideality_hunter/article/details/78432486 long是长整型,64位 int是短整型,32位 double是双精 ...

  3. BZOJ3786: 星系探索(伪ETT)

    题面 传送门 题解 坑啊--我好像把\(Splay\)的东西全忘光了-- \(ETT\)(\(Euler\ Tour\ Tree\))是一种可以资瓷比\(LCT\)更多功能的数据结构,然而不管是功能还 ...

  4. PHP中运算符优先级

    运算符优先级指定了两个表达式绑定得有多“紧密”.例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高.必要时可以用括号来强制改变优先级.例如: ...

  5. luncene 查询字符串的解析-QueryParser类

    搜索流程中的第二步就是构建一个Query.下面就来介绍Query及其构建. 当用户输入一个关键字,搜索引擎接收到后,并不是立刻就将它放入后台开始进行关键字的检索,而应当首先对这个关键字进行一定的分析和 ...

  6. AngularJS源码解析3:RootScope的创建过程

    RootScopeProvider简介 RootScopeProvider是angularjs里面比较活跃的一个provider.它主要用来生成实例rootScope,它代表angularjs应用的根 ...

  7. 解决 MySQL 1045错误的三种方法 (转)

    连接MySQL数据库时难免会遇到1045错误,主要是因为用户输入的用户名或密码错误被拒绝访问,如果不想重装,需要找回密码或者重置密码. 问题描述: 1045-Access denied for use ...

  8. 解决Python向MySQL数据库插入中文数据时出现乱码

    解决Python向MySQL数据库插入中文数据时出现乱码 先在MySQL命令行中输入如下语句查看结果: 只要character_set_client character_set_database ch ...

  9. HDU - tag :: Multi-University 大合集

    说明:按无序更新,只更(会)水题 4632 题意:求字符串的回文子[序列]个数 区间DP,设\(dp[i][j]\)为\([i,j]\)范围内的回文子序列个数, 由容斥定理可得\(dp[i][j]=d ...

  10. depmod -a

    分析可加载模块的依赖性,生成modules.dep文件和映射文件 intelligent bash: ' while true;do grep "reading error" ue ...