import java.util.*;
import java.io.*;
public class PropertiesDemo {
public static void main(String[] args) throws IOException {
Properties prop=new Properties();
File files=new File("con.txt");
if(!files.exists()){
files.createNewFile();//为啥不能自动创建文件啊,报错如下
/*
Exception in thread "main" java.io.FileNotFoundException: con.txt (拒绝访问。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at PropertiesDemo.main(PropertiesDemo.java:12)
*/
}
FileInputStream frs=new FileInputStream(files);
prop.load(frs); int count=0;
String s=prop.getProperty("time");
if(s!=null){
count=Integer.parseInt(s);//为啥不能用count=int()s;我记得以前貌似有这样的形式
if(count>=3){
System.out.println("你已超过使用次数");
return;
}
}
count++;
prop.setProperty("time", count+"");//这里count后为啥加上""
FileOutputStream fws=new FileOutputStream(files);
prop.store(fws, "");
frs.close();
fws.close();
}
public static void sop(Object obj){
System.out.println(obj);
}
}
String类型转换成整形,就是用Integer.parseInt(s),你说的这个我从来没见过prop.setProperty("time", count+"");//这里count后为啥加上""
加""是让count隐式转换成String类型。至于为什么不能自动创建文件,感觉好像是你的系统的问题
java.io.FileNotFoundException: con.txt (拒绝访问。答案1.个人感觉是不是因为你路径写错了?例如你改成D:\\con.txt试试呢?还有,12行是哪个代码?如果是files.createNewFile()那么我感觉就是你路径必须写绝对路径。问题2.count=Integer.parseInt(s);//为啥不能用count=int()s;我记得以前貌似有这样的形式答案2.我从来不知道java里面可以有这种写法,你确定你见过这种写法?并且是在java中?没有报错?String转int一般我都用Integer.parseInt(str)的。问题3.prop.setProperty("time", count+"");//这里count后为啥加上""答案3.这里的最好理解了。因为setProperty函数要求的是传入两个String类型的参数,但是你的count是int类型,传过去肯定报错,java中有一些隐型转换,int转String就是隐型转换的一种,只需要在int值的后面加一个空字符串就自动转换为String类型了。除了这个就是高精度转低精度都是隐型转换的。
1、绝对路径没写完整
2、这个“int()s”,楼主的意思应该是“(int)s”吧,不能这样转换String的,普通的long、double等number可以这么搞,但是String就不行了,通常用Integer.parseInt()
3、一个数字加字符就会转换成字符,不过感觉写成“""+count”应该效率会更高一些!
你取什么名不好,非要取con,你知道con在windows系统下有啥涵义不?
con是串口的设备名,属于系统的预留名。所以你不能创建任何以con为文件名的文件和文件夹。问题二:
count=int()s,java里面绝对没有的这样的方法,所以lz,基础是很重要的!问题三:
count是int类型的,而setProperty(String key,String value)方法的两个参数都是String类型的,当然要把count转换成String类型啊,所以才是count+""。