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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 尹善波 中级黑马   /  2012-8-9 17:08  /  1322 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//毕老师配置文件代码
import java.io.*;
import java.util.*;
class RunCount
{
public static void main(String[] args) throws IOException
{
  Properties prop=new Properties();
  File file=new File("d:\\count.ini");
  if (!file.exists())
  {
   file.createNewFile();
  }
  FileInputStream fis=new FileInputStream(file);
  prop.load(fis);//load方法是怎么把字节流存进Properties集合的?
  int count=0;
  String value=prop.getProperty("time");
  if (value!=null)
  {
   count=Integer.parseInt(value);
   if (count>=5)
   {
    System.out.println("您好;使用次数已超过五次,请购买正版软件啊!");
    return;
   }
  }
  count++;
  prop.setProperty("time",count+"");//设置键值对的时候time是字符串,但count不该是变量吗,直接写count不就行了吗,干嘛还要写count+""?
  FileOutputStream fos=new FileOutputStream(file);
  prop.store(fos,"hh");
  fos.close();
  fis.close();
}
}
//另一个小问题,有时候不小心设置键值对的出错了,,修改后必须手动删去count.ini文件,请问有没有更好的处理方法?
//我在count.ini文件中设置time=-2,time=2,运行后只剩下time=3,另一个怎么没有了?

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
关于楼主的第一问题,你可以具体去看一下,API文档,写了老长一段,还有例子,我就不拷贝过来了。主要意思就是说它是按照一种固定的编码方式转变的。
至于count+“”问题就没得说了,public Object setProperty(String key, String value),必须是String型的。
第三个问题吗,其实很好理解,既然是键值对,那么键就是唯一的,不能同时存在多个相同的键。不过文件中已经是写好的了,jvm没办法改,所以只能读取一个。
回复 使用道具 举报

//毕老师配置文件代码
import java.io.*;
import java.util.*;
class RunCount
{
public static void main(String[] args) throws IOException
{
  Properties prop=new Properties();
  File file=new File("d:\\count.ini");
  if (!file.exists())
  {
   file.createNewFile();
  }
  FileInputStream fis=new FileInputStream(file);
  prop.load(fis);//load方法是怎么把字节流存进Properties集合的?----通过Properties 这东东,这个就是专门加载键值对的集合,和Map集合类似,他吧字节流中的键值对都加载进Properties 这个集合中,然后就可以对Properties这个集合进行操作获得所需数据
  int count=0;
  String value=prop.getProperty("time");
  if (value!=null)
  {
   count=Integer.parseInt(value);
   if (count>=5)
   {
    System.out.println("您好;使用次数已超过五次,请购买正版软件啊!");
    return;
   }
  }
  count++;
  prop.setProperty("time",count+"");//设置键值对的时候time是字符串,但count不该是变量吗,直接写count不就行了吗,干嘛还要写count+""?--这里是把time作为键,键都是字符串,后面的count+""是因为count是int类型的,要把它变成String类型的。   配置文件都是String类型的,所以time和count都要是String类型的
  FileOutputStream fos=new FileOutputStream(file);
  prop.store(fos,"hh");
  fos.close();
  fis.close();
}
}
//另一个小问题,有时候不小心设置键值对的出错了,,修改后必须手动删去count.ini文件,请问有没有更好的处理方法?----  有,但是黑麻烦,你需要把这个文件在读取一遍,然后把里面键值对删掉,在运行就不会有之前的错的简直对了,麻烦不。。。。手动删了程序就从新运行,文件也从新创建,方便不要写代码了0.0
//我在count.ini文件中设置time=-2,time=2,运行后只剩下time=3,另一个怎么没有了?----???另一个?你想要几个额。。。。。因为time=2时你运行了程序,所以count++就变成了3咯{:soso_e110:}
回复 使用道具 举报
//毕老师配置文件代码
import java.io.*;
import java.util.*;
class RunCount
{
public static void main(String[] args) throws IOException
{
  Properties prop=new Properties();
  File file=new File("d:\\count.ini");
  if (!file.exists())
  {
   file.createNewFile();
  }
  FileInputStream fis=new FileInputStream(file);
  prop.load(fis);//load方法是怎么把字节流存进Properties集合的?----通过Properties 这东东,这个就是专门加载键值对的集合,和Map集合类似,他吧字节流中的键值对都加载进Properties 这个集合中,然后就可以对Properties这个集合进行操作获得所需数据
  int count=0;
  String value=prop.getProperty("time");
  if (value!=null)
  {
   count=Integer.parseInt(value);
   if (count>=5)
   {
    System.out.println("您好;使用次数已超过五次,请购买正版软件啊!");
    return;
   }
  }
  count++;
  prop.setProperty("time",count+"");//设置键值对的时候time是字符串,但count不该是变量吗,直接写count不就行了吗,干嘛还要写count+""?--这里是把time作为键,键都是字符串,后面的count+""是因为count是int类型的,要把它变成String类型的。   配置文件都是String类型的,所以time和count都要是String类型的
  FileOutputStream fos=new FileOutputStream(file);
  prop.store(fos,"hh");
  fos.close();
  fis.close();
}
}
//另一个小问题,有时候不小心设置键值对的出错了,,修改后必须手动删去count.ini文件,请问有没有更好的处理方法?---- 有,但是黑麻烦,你需要把这个文件在读取一遍,然后把里面键值对删掉,在运行就不会有之前的错的简直对了,麻烦不。。。。手动删了程序就从新运行,文件也从新创建,方便不要写代码了0.0
//我在count.ini文件中设置time=-2,time=2,运行后只剩下time=3,另一个怎么没有了?----???另一个?你想要几个额。。。。。因为time=2时你运行了程序,所以count++就变成了3咯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马