黑马程序员技术交流社区
标题:
帮忙看下错误在哪里
[打印本页]
作者:
黄蒙
时间:
2015-8-21 09:04
标题:
帮忙看下错误在哪里
本帖最后由 黄蒙 于 2015-8-21 09:11 编辑
import java.io.*;
import java.util.*;
/**
* 需求:定义配置文件,使得本程序只能打开并使用5次,第6次则弹出“使用次数用完”;
*
* 思路:定义配置文件,这个文件是写入在硬盘上的,每次启动程序时调用读取,其保存的形式应该是以键值对的形式
*
* 键值对的保持离不开map而文件写入写出离不开输入输出流,可以使用输入输出流与map中的桥梁Properties
*
* 源;硬盘文件 中介 内存 目的:硬盘文件
* 输入流对象:FileInputStream 中介 Properties 输出流对象:FileOutputStream
*
* */
public class SoftwareCount {
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
Properties pro = new Properties();//
File file = new File("F:\\Properties.ini");
if(!file.exists())
{
file.createNewFile();
}
/*BufferedInputStream bfr =
new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bfw =
new BufferedOutputStream(new FileOutputStream(file));*/
FileInputStream bfr = new FileInputStream(file);
FileOutputStream bfw = new FileOutputStream(file);/**/
pro.load(bfr);//Debug出来每次执行到这一句就会重新建立一个空的配置文件
String value=pro.getProperty("time");
int count=0;
if(value!=null)
{
count = Integer.parseInt(value);
if(count>=5)
{
System.out.println("使用次数已用完");
return ;
}
}
count++;
pro.setProperty("time", count+"");
pro.store(bfw,"");
bfr.close();
bfw.close();
}
}
复制代码
我也不知道为什么了,明明跟着老师一起做的。。这个语句就是有问题啊。。
作者:
Cancer
时间:
2015-8-21 09:20
本帖最后由 Cancer 于 2015-8-21 09:34 编辑
好吧,我测试好久我也不太清楚了
作者:
黄蒙
时间:
2015-8-21 09:49
Cancer 发表于 2015-8-21 09:20
好吧,我测试好久我也不太清楚了
感觉真是见鬼了- -
作者:
pengbeilin
时间:
2015-8-21 10:05
本帖最后由 pengbeilin 于 2015-8-21 10:07 编辑
哥们给你看下我写的吧~ 和你的比对下 感觉好像差不多~ 还是以前看视频的时候写的。 运行5次就提示。
import java.io.*;
import java.util.*;
class demo06
{
public static void main(String[] args) throws IOException
{
File f = new File("propertise.ini");//建立文件对象
if(!f.exists())
f.createNewFile();
Properties pro = new Properties();//建立集合
FileInputStream fis = new FileInputStream(f);//读取io流
pro.load(fis);//把文件里面的键值对拿出来放到集合中
int count = 0;
String v = pro.getProperty("time");//获取time键的值 如果没有返回null
if(v!=null)//如果不为空的话
{
count = Integer.parseInt(v);//就取出time的值,把值从字符串转换成int
if(count>=5)//判断
{
System.out.println("您的余额已不足,请及时充值!");
return;
}
}
count++;//程序每运行一次,次数+1
pro.setProperty("time",count+"");//把键和值又 存入集合中
FileOutputStream fos = new FileOutputStream(f);
pro.store(fos,"");
fis.close();
fos.close();
}
}
复制代码
作者:
sven556677
时间:
2015-8-21 11:02
好像是昨天,我也碰到这个情况,弄了小半天,对着视频一句句代码改,才发现问题出在哪。具体就是初始化的时候,properties对象要加载之前再初始化InputStream/Writer,然后要写入的时候再初始化out/writer。
至于为什么,我就不知道了。楼主要是最后知道了,望一定通知我一下。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2