最笨最实在思路最全面的做法,用于最基础的代码锻炼非常有效,推荐给大家打打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
心。 阅读(2465)
评论(2) 编辑 收藏 所属分类:
java