最笨最实在思路最全面的做法,用于最基础的代码锻炼非常有效,推荐给大家打打java底^_^ 
package cn.net.withub.xfgl.common; 


/** *//** 
* @author YuLuo 
*/ 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.Properties; 
//前一篇已介绍此方法 
import cn.net.withub.xfgl.common.ToUnicode; 

public class CreatePro 
{ 
//读文件 
public static String readFile(String filePath, String parameterName) throws IOException, FileNotFoundException 
{ 
    String result = null; 
    File file = new File(filePath); 
        if (file.exists()) 
{ 
        FileInputStream fis = new FileInputStream(file); 
        byte[] b = new byte[fis.available()]; 
        fis.read(b); 
        result = new String(b, "UTF-8"); 
        fis.close(); 
    } 
    return result; 
} 
//修改后存储 
public static void saveFile(String content, String path, String fileName) throws IOException 
{ 
    File f = new File(path); 
    if (!f.exists()) 
{ 
        f.mkdirs(); 
    } 
    File fn = new File(f, fileName); 
    FileOutputStream fos = new FileOutputStream(fn); 
    fos.write(content.getBytes()); 
    fos.close(); 
} 
//删除旧文件 

public static void deleteFile(String path) throws IOException 
{ 
    File f = new File(path); 
    if (f.exists()) 
{ 
        f.delete(); 

} else 
{ 
        throw new IOException("未找到相关文件"); 
    } 
} 
//执行方法 
public static boolean writeProperties(String filePath, String parameterName, String parameterValue) 
{ 
    boolean flag = false; 
    try 
{ 
        //取得文件所有内容 
        String all = CreatePro.readFile(filePath, parameterName); 
        String result = null; 
        //如果配置文件里存在parameterName 
        if (all.indexOf(parameterName) != -1) 
{ 
            //得到parameterName前的字节数 
            int a=all.indexOf(parameterName); 
            //取得以前parameterName的值 
            String old = readProperties(filePath, parameterName); 
            //得到parameterName值前的字节数 
            int b=a+(parameterName.length()+"=".length()); 
            //新的properties文件所有内容为:旧的properties文件中内容parameterName+"="+新的parameterName值(parameterValue)+旧的properties文件中parameterName值之后的内容 
            result=all.substring(0,a)+parameterName+"="+parameterValue+all.substring(b+ToUnicode.convert(old).length(),all.length()); 
        } 
        //删除以前的properties文件 
       CreatePro.deleteFile(filePath); 
        //存储新文件到以前位置 
        String[] arrPath = filePath.split("WEB-INF"); 
        String path = arrPath[0]+"WEB-INF\\configs"; 
        CreatePro.saveFile(result, path, "xf.properties"); 
        flag=true; 

} catch (IOException e) 
{ 
        e.printStackTrace(); 
        flag=false; 
    } 
    return flag; 
} 
//Properties方法写properties文件 

/**//*Properties prop = new Properties(); 
try { 
InputStream fis = new 
FileInputStream(filePath); 
//从输入流中读取属性列表(键和元素对) prop.load(fis); 
//调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。 
//强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。 
OutputStream fos = new FileOutputStream(filePath); 
prop.setProperty(parameterName,parameterValue); 
//以适合使用 load 方法加载到 Properties 表中的格式, 
//将此Properties 表中的属性列表(键和元素对)写入输出流 
prop.store(fos, "Update '" + parameterName + "' value \n"); 
falg = true; 
}catch (IOException e) { 
e.printStackTrace(); 
System.err.println("Visit " + filePath + " for updating " + parameterName + " value error"); 
falg = false; 
}*/ 
//读properties文件,Properties方法 

public static String readProperties(String filePath, String parameterName) 
{ 
    String value = ""; 
    Properties prop = new Properties(); 
    try 
{ 
        InputStream fis = new FileInputStream(filePath); 
        prop.load(fis); 
        value = prop.getProperty(parameterName); 
    } catch (IOException e) 
{ 
        e.printStackTrace(); 
    } 
    return value; 
}  
	posted on 2007-07-31 16:24 
 心。 阅读(2485) 
评论(2)  编辑  收藏  所属分类: 
java