黑马程序员技术交流社区

标题: 关于用Properties类来做程序使用次数的记录出现的奇怪现象 [打印本页]

作者: 温水煮青蛙    时间: 2014-5-12 20:50
标题: 关于用Properties类来做程序使用次数的记录出现的奇怪现象
package com.itheima.file;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Properties;

public class FileDemo2 {
        int count=0;

        /**
         * @param args
         */
        public static void main(String[] args) {
                int count=0;
               
                File file=new File("E://count.ini");
                Properties prop=new Properties();
               
                FileInputStream fis=null;
                FileOutputStream fos=null;
               
                if(!(file.exists())){
                        try {
                                file.createNewFile();
                                 fis=new FileInputStream(file);
                               
                                prop.load(fis);
                               
                                String value=prop.getProperty("count");
                                if(value!=null){
                                        count=Integer.parseInt(value);
                                        if(count>=5){
                                                System.out.println("使用次数超过五次,请付费后再使用");
                                                return;
                                        }
                                }
                                count++;
                                System.out.println("您是第"+count+"次使用本程序");
                                prop.setProperty("count", count+"");
                                fos=new FileOutputStream(file);
                                prop.store(fos, null);
                               
                        } catch (IOException e) {
                               
                                e.printStackTrace();
                        }finally{
                                try {
                                        if(fis!=null&&fos!=null){
                                        fis.close();
                                        fos.close();
                                        }
                                } catch (IOException e) {
                                       
                                        e.printStackTrace();
                                }
                               
                               
                        }
                       
                }
       

        }

}
这是我写的代码,运行第一次会正常打印您是第1次使用本程序,并在E盘生成count.ini文件。文件保存的键值对为count=1.可是第二次运行时既不报错也不报异常,控制台上显示:<terminated> FileDemo2[Java Application]C:\Program Files\Java\jre6\bin\javaw.exe.  这什么情况啊?
作者: skill20    时间: 2014-5-12 21:32
路径有点别扭的说。
  1. package cn.itcast.day;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.util.Properties;

  8. public class PropertiesTest {

  9.         public static void main(String[] args) {
  10.                 // TODO Auto-generated method stub
  11.                 count();
  12.         }
  13.         public static void count(){
  14.                 File file = new File("d:\\info.ini");
  15.                 Properties prop = new Properties();
  16.                 FileInputStream fis = null;
  17.                 FileOutputStream fos = null;
  18.                 try {
  19.                         if(!file.exists())
  20.                                 file.createNewFile();
  21.                         fis = new FileInputStream(file);
  22.                         prop.load(fis);
  23.                         int count = 0;
  24.                         String value = prop.getProperty("time");
  25.                         if(value != null){
  26.                                 count = Integer.parseInt(value);
  27.                                 if(count >= 5){
  28.                                         System.out.println("次数已到,暂停使用");
  29.                                         return;
  30.                                 }
  31.                         }
  32.                         count++;
  33.                         prop.put("time", count+"");
  34.                         fos = new FileOutputStream(file);
  35.                         prop.store(fos, "");       
  36.                 } catch (FileNotFoundException e) {
  37.                         // TODO Auto-generated catch block
  38.                         e.printStackTrace();
  39.                 } catch (IOException e) {
  40.                         // TODO Auto-generated catch block
  41.                         e.printStackTrace();
  42.                 }finally{
  43.                         try {
  44.                                 if(fis != null)
  45.                                         fis.close();
  46.                         } catch (IOException e) {
  47.                                 // TODO Auto-generated catch block
  48.                                 e.printStackTrace();
  49.                         }
  50.                         try {
  51.                                 if(fos != null)
  52.                                         fos.close();
  53.                         } catch (IOException e) {
  54.                                 // TODO Auto-generated catch block
  55.                                 e.printStackTrace();
  56.                         }
  57.                 }
  58.                
  59.         }

  60. }
复制代码

作者: 温水煮青蛙    时间: 2014-5-13 08:31
谢谢大神,问题我已经找到了,不是路径的问题,是我把if(!(file.exists())){....}包含所有的代码,导致 只要文件已存在 他就不执行了。所以第一次会成功,以后的都没打印输出




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2