import java.util.Properties;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.FileOutputStream;
import java.util.List;
import java.util.ArrayList;
public class Test610{
public static void main(String[] aegs){
System.out.println("读出记录数需要的时间是"+getTime()+"毫秒");
System.out.println("需要的时间是"+getTime('f','z')+"毫秒");
System.out.println("需要的时间是"+getListTime('f','z')+"毫秒");
}
//计算出读取完所有属性文件里的记录时间消耗
static long getTime(){
//s,e起始时间
long s= System.currentTimeMillis();
Properties pro =new Properties();
try{
pro.load(new FileInputStream("Test610.Properties"));
}catch(IOException e){
}
//遍历整个属性文件
for(int i =1;pro.getProperty("a"+i) != null;i++){
System.out.println(pro.getProperty("a"+i));
}
long e =System.currentTimeMillis();
return (e-s);
}
//读取属性文件里的所有记录,并且查找替换,最后把替换后的记录写入新属性文件,并记录时间消耗
static long getTime(char olds,char news){
long s= System.currentTimeMillis();
Properties pro =new Properties();
try{
pro.load(new FileInputStream("Test610.Properties"));
}catch(IOException e){
}
for(int i =1;pro.getProperty("a"+i) != null;i++){
pro.setProperty("a"+i,pro.getProperty("a"+i).replace(olds,news));
}
try{
pro.store(new FileOutputStream("Test610_new1.Properties"),null);
}catch(IOException e){
}
long e =System.currentTimeMillis();
return (e-s);
}
//读取属性文件里的所有记录,并放到集合进行替换,把替换后的记录写入新属性文件,并记录时间消耗
static long getListTime(char olds,char news){
long s= System.currentTimeMillis();
Properties pro =new Properties();
try{
pro.load(new FileInputStream("Test610.Properties"));
}catch(IOException e){
}
List list = new ArrayList();
//List list = new java.util.LinkedList();
for(int i =1;pro.getProperty("a"+i) != null;i++){
list.add(pro.getProperty("a"+i));
}
for(int i=1;i<=list.size();i++){
pro.setProperty(("a"+i),list.get(i-1).toString().replace(olds,news));
}
try{
pro.store(new FileOutputStream("Test610_new2.Properties"),null);
}catch(IOException e){
}

long e =System.currentTimeMillis();
return (e-s);
}
}经过测试把数据放到集合替换比直接字符串替换效率要高。
PS:再贴个产生数据行的用列
import java.util.Random;
import java.io.IOException;
import java.io.FileOutputStream;
import java.util.Properties;
import java.lang.StringBuffer;
public class Test610add{
public static void main(String[] args){
Properties pro =new Properties();
Random ran =new Random();
StringBuffer str = new StringBuffer();
for(int i=1;i<=200;i++){
str.delete(0,5);
for(int k=0;k<5;k++){
str.append(String.valueOf((char)(ran.nextInt(26)+97)));
}
pro.setProperty(("a"+i),str.toString());
}
try{
pro.store(new FileOutputStream("Test610.Properties"),null);
}catch(IOException e){
}
}
}产生200行的数据.


浙公网安备 33010602011771号