A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

各位大神好 现在有个问题 需要求助{:soso_e136:}
需求是这样的 我模拟试用软件 如果大于等于5次 我就提示这个软件需要付费 交钱

下面是我利用Properties加io操作 写的一个代码
  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.util.Properties;


  8. public class RegisterDemo {

  9.         /**
  10.          * @param args
  11.          * @throws IOException
  12.          */
  13.         public static void main(String[] args) throws IOException {
  14.                 // TODO Auto-generated method stub
  15.                
  16.                
  17.                 Properties p = new Properties();
  18.                 File f = new File("c:\\info.ini");
  19.                 if(!(f.exists()))
  20.                         f.createNewFile();
  21.                
  22.                 FileInputStream fis  = new FileInputStream(f);//封装便于操作
  23.                 //这里设置ini是为了便于打开
  24.                 p.load(fis);
  25.                 int count =0;
  26.                 String s = p.getProperty("time");//取得次数
  27.                 if(s!=null){
  28.                          count = Integer.parseInt(s);
  29.                          if(count>=5){
  30.                                  
  31.                                  System.out.println("次数用完了 拿钱");
  32.                                  return;
  33.                          }
  34.                          count++;
  35.                          p.setProperty("time",count+" " );//这里面传两个String参数
  36.                          FileOutputStream fos = new FileOutputStream(f);
  37.                          p.store(fos, "");
  38.                          
  39.                          fos.close();
  40.                          fis.close();
  41.                        
  42.                 }

  43.         }
  44.        

  45. }
复制代码
现在的问题是 我生成的info.ini 注册文件里面 是空的 没有任何东西 更别说是次数键值对了
也就是说 假如是个软件的话 这是无限使用的 不符合当初的需求
请问代码究竟是哪个地方出了问题了 我也用了store方法去存储了啊 为什么没有内容{:soso_e136:}


评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

4 个回复

倒序浏览
刚开始文件里没内容的话,读到的就是NULL值。就不会向文件里写入数据了,所以文件总是空的。
:在文件里加一行time=0就可以了
:或者if(){......}esle{//在这里如果为NULL的话对文件写入time=1}
另p.setProperty("time",count+" " );这里写入了空格,下次count = Integer.parseInt(s)的时候会报错:改成count = Integer.parseInt(s.trim())。或者p.setProperty("time",count+"");

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 陪你等日出 于 2014-2-7 01:45 编辑

问题其实挺简单,你设置完配置文件中time的值后没存储
  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.util.Properties;


  8. public class RegisterDemo {

  9.         /**
  10.          * @param args
  11.          * @throws IOException
  12.          */
  13.         public static void main(String[] args) throws IOException {
  14.                 // TODO Auto-generated method stub
  15.                
  16.                
  17.                 Properties p = new Properties();
  18.                 File f = new File("c:\\info.ini");
  19.                 if(!(f.exists()))
  20.                         f.createNewFile();
  21.                
  22.                 FileInputStream fis  = new FileInputStream(f);//封装便于操作
  23.                 //这里设置ini是为了便于打开
  24.                 p.load(fis);
  25.                 int count =0;
  26.                 String s = p.getProperty("time");//取得次数
  27.                 if(s!=null){
  28.                          count = Integer.parseInt(s);
  29.                          if(count>=5){
  30.                                  
  31.                                  System.out.println("次数用完了 拿钱");
  32.                                  return;
  33.                          }
  34.                          count++;
  35.                          p.setProperty("time",count+" " );//这里面传两个String参数
  36.                          FileOutputStream fos = new FileOutputStream(f);
  37.                          //上面setProperty之后还要存储下
  38.                          p.store(fos, count+"");
  39.                         
  40.                          fos.close();
  41.                          fis.close();
  42.                         
  43.                 }
  44.         }
  45. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
陪你等日出 发表于 2014-2-7 01:40
问题其实挺简单,你设置完配置文件中time的值后没存储

原来如此 我少存了个 了解了
回复 使用道具 举报
e.c 发表于 2014-2-6 18:47
刚开始文件里没内容的话,读到的就是NULL值。就不会向文件里写入数据了,所以文件总是空的。
:在文件里加 ...

嗯嗯 懂了:lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马