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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

那个用Properties实现软件计数器的功能。开始调的很好的,后面一加try catch finally的close就不行了,Property装载不了Reader了。
代码如下:
  1. package com.cn.filedemo;

  2. import java.io.*;
  3. import java.util.Properties;

  4. public class UseCountByProperties {
  5.         public static void main(String[] args) {
  6.                 FileReader fr = null;
  7.                 FileWriter fw = null;
  8.                 try {
  9.                         int count = 0;// 计数器为0
  10.                         File myfile = new File("countReader.ini");// 建立文件
  11.                         if (!myfile.exists()) {
  12.                                 myfile.createNewFile();
  13.                         }
  14.                         fr = new FileReader(myfile);
  15.                         fw = new FileWriter(myfile);
  16.                         Properties prop = new Properties();
  17.                         prop.load(fr);// Properties装载这个文件
  18.                         prop.list(System.out);
  19.                         String value = prop.getProperty("time");// 取出值
  20.                         System.out.println(value);
  21.                         if (value!= null) {
  22.                                 count = Integer.parseInt(value);
  23.                         }// 做下判断,不为空就转成count
  24.                         if (count > 5) {// 超过使用次数就提醒
  25.                                 System.out.println("交钱");
  26.                                 return;
  27.                         }
  28.                         System.out.println("使用次数"+count);
  29.                         count++;// 用这次就++
  30.                         prop.setProperty("time", count+"");// 存储
  31.                         prop.store(fw, "计数");// 写入
  32.                 } catch (Exception e) {
  33.                         e.printStackTrace();
  34.                 } finally {
  35.                         try {
  36.                                 if (fr != null)
  37.                                         fr.close();
  38.                         } catch (Exception e2) {
  39.                                 e2.printStackTrace();
  40.                         }
  41.                         try {
  42.                                 if (fw != null)
  43.                                         fw.close();
  44.                         } catch (Exception e2) {
  45.                                 e2.printStackTrace();
  46.                         }
  47.                 }

  48.         }
  49. }
复制代码

我新建了个简易的,load的很好啊
  1. package com.cn.filedemo;

  2. import java.util.Properties;
  3. import java.io.*;

  4. public class tesst1 {
  5.         public static void main(String[] args) throws IOException {
  6.                 Properties p=new Properties();
  7.                 FileReader fr=new FileReader("countReader.ini");
  8.                 p.load(fr);
  9.                 p.list(System.out);
  10.                
  11.         }
  12. }
复制代码

3 个回复

倒序浏览
编译没有问题,但结果是property没读到。
查来查去第19行有问题。
回复 使用道具 举报
路过,看看,学习了
回复 使用道具 举报
把初始化调整了一下位置就好了,不知道什么原因。
弄了半上午,唉~~~、
这是调整后的代码,大神们知道原因的望告知。
  1. package com.cn.filedemo;

  2. import java.io.*;
  3. import java.util.Properties;
  4. /**
  5. * 有问题,19行装载不了
  6. * @author Administrator
  7. *
  8. */
  9. public class UseCountByProperties {
  10.         public static void main(String[] args){
  11.                 FileReader fr = null;
  12.                 FileWriter fw = null;
  13.                 try {
  14.                         int count = 0;// 计数器为0
  15.                         File myfile = new File("countReader.ini");// 建立文件
  16.                         if (!myfile.exists()) {
  17.                                 myfile.createNewFile();
  18.                         }
  19.                         fr = new FileReader(myfile);//要用了才初始化,与下面的fw一样,这是为什么呢?????????
  20.                         Properties prop = new Properties();
  21.                         prop.load(fr);
  22.                         prop.list(System.out);
  23.                         String value = prop.getProperty("time");// 取出值
  24.                         System.out.println(value);
  25.                         if (value!= null) {
  26.                                 count = Integer.parseInt(value);
  27.                         }// 做下判断,不为空就转成count
  28.                         if (count > 5) {// 超过使用次数就提醒
  29.                                 System.out.println("交钱");
  30.                                 return;
  31.                         }
  32.                         System.out.println("使用次数"+count);
  33.                         count++;// 用这次就++
  34.                         prop.setProperty("time", count+"");// 存储
  35.                         fw = new FileWriter(myfile);
  36.                         prop.store(fw, "计数");// 写入
  37.                 } catch (Exception e) {
  38.                         e.printStackTrace();
  39.                 } finally {
  40.                         try {
  41.                                 if (fr != null)
  42.                                         fr.close();
  43.                         } catch (Exception e2) {
  44.                                 e2.printStackTrace();
  45.                         }
  46.                         try {
  47.                                 if (fw != null)
  48.                                         fw.close();
  49.                         } catch (Exception e2) {
  50.                                 e2.printStackTrace();
  51.                         }
  52.                 }

  53.         }
  54. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马