震世界
霸占个.net的地方写JAVA

导航

 
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行的数据.
posted on 2006-06-12 11:01    阅读(409)  评论(0)    收藏  举报