/**
* Copyright @ 2013 transfar<br>
* All right reserved<br>
*/
package com;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Map.Entry;
/**
* 将R.properties里面对应的key替换代码中的value
* Class Name: TestMain<br>
* Description: 类功能说明<br>
* Sample: 该类的典型使用方法和用例<br>
* Author: fanggt<br>
* Date: 2013-7-2<br>
* --------------------------------------------------<br>
* 修改人 修改日期 修改描述<br>
* fanggt 2013-7-2 创建<br>
* --------------------------------------------------<br>
* @Version Ver1.0<br>
*/
public class TestMain {
/**
* 描述: <br>
* @param args<br>
* @throws Exception
* @throws FileNotFoundException
* @author:fanggt<br>
* @date:2013-7-2<br>
* --------------------------------------------------<br>
* 修改人 修改日期 修改描述<br>
* fanggt 2013-7-2 创建<br>
* --------------------------------------------------<br>
*/
public static void main(String[] args) throws FileNotFoundException, Exception {
String propFile = "src/change.properties";
Properties props = TestMain.loadR(propFile);
File ceilFile = new File(file3);
changeValue(ceilFile,props);
}
private static String file = "E:/androidWork/StartScreen/src/com/wbtech";
private static String fileName2 = "E:/R";
private static String file3 = "C:/Documents and Settings/Administrator/桌面/change.txt";
public static Properties loadR(String propFile) throws FileNotFoundException, IOException{
if(null == propFile){
propFile = "src/key.properties";
}
Properties props = new Properties();
props.load(new FileReader(propFile));
return props;
}
public static void changeValue(File file,Map props) throws Exception{
if(!file.exists()){
return;
}
if(file.isDirectory()){
File[] files = file.listFiles();
if(files.length>0){
for(File f:files){
changeValue(f,props);
}
}
}else if(file.isFile()){
String path = file.getPath();
BufferedReader br = new BufferedReader(new FileReader(file));
String tempFileName = file.getPath()+".bak";
File tempFile = new File(tempFileName);
if(!tempFile.exists()){
tempFile.createNewFile();
}
PrintWriter pw = new PrintWriter(tempFile,"UTF-8");
String temp = null;
StringBuffer buffer = new StringBuffer();
while((temp = br.readLine())!=null){
buffer.append(temp).append("\r\n");
}
String str = buffer.toString();
Iterator it = props.entrySet().iterator();
while(it.hasNext()){
Map.Entry entry = (Entry) it.next();
String key = (String) entry.getKey();
String value = (String) entry.getValue();
//str = str.replaceAll(value, key);
str = str.replaceAll(key, value);
}
pw.write(str);
br.close();
pw.flush();
pw.close();
file.delete();
File f = new File(path);
tempFile.renameTo(f);
File temp_tempFile = new File(tempFileName);
if(temp_tempFile.exists()){
temp_tempFile.delete();
}
}
}
}
相关推荐
本教程将聚焦于使用Python实现Office办公自动化,具体来说,是如何利用Python来批量替换Word文档中的指定内容,包括页眉部分。这个过程涉及到Python的几个重要库,如`python-docx`和`os`。 `python-docx`是一个用于...
在JavaScript中,替换JSON对象中的键(key...选择哪种方法取决于具体需求,比如是否需要保持键的原始顺序、是否需要批量替换,以及是否能引入额外的库。在实际开发中,要根据项目的规模和性能要求,灵活运用这些方法。
- **mset key1 value1 key2 value2...**: 批量设置键值对。 - **mget key1 key2...**: 批量获取键值对。 - **setrange key offset value**: 替换指定偏移量的字符串。 - **getrange key start stop**: 获取字符串的...
foreach ($_POST as $key => $value) { // 使用预定义的检查函数处理可能的注入 $data[$key] = check($_POST[$key]); // 构建SQL插入语句 $sql = "INSERT INTO test_table SET $key = '" . $data[$key] . "'"; ...
# 使用你的API密钥替换'YOUR_API_KEY' api_key = 'YOUR_API_KEY' # 构建搜索URL url = f"https://scihub.copernicus.eu/dhus/odata/v1/Products?$filter=Satellite eq 'Sentinel-1A' and " \ f"ProductType ...
5. `setrange key offset value`:替换或扩展字符串,将指定偏移量的字节设置为新值。 6. `append key value`:在键的现有值后追加值。 7. `getrange key start stop`:获取字符串指定范围内的字节。 8. `getset key...
总结来说,Android SDK结合Ant进行多渠道批量打包是通过创建一个Ant构建脚本,遍历渠道列表,为每个渠道生成包含特定标识的APK,然后使用Android SDK的`apksigner`和`zipalign`工具进行签名和优化。这种方法虽然相对...
键值更换器可以帮助用户快速定位这些键值,并进行批量替换,无需手动逐行搜索和编辑。 在使用"键值更换器"时,首先需要了解目标文件的格式,因为不同的文件可能需要不同的解析方式。例如,XML文件的键值对可以通过...
在遍历Excel数据时,我们使用` XWPFDocument `的` createParagraph `和` createRun `方法动态地替换占位符,生成新的Word文档: ```java // 假设我们有一个Map, String> excelData存储了从Excel读取的数据 Map, ...
如果需要批量替换,可以将多个替换规则放入`HashMap`中,然后在循环中逐一应用。在实际应用中,你可能还需要处理更多复杂情况,如处理非表单文本、考虑文本的格式和位置等。`iText`提供了丰富的API,使得这些任务变...
设置指定key的value字符串从指定的offset开始替换。 2.2.5 mset 批量设置多个key-value对。 2.2.6 msetnx 类似mset,但只有所有给定的key都不存在时,才会执行设置操作。 2.2.7 get 获取存储在给定key中的值。 ...
- **`replace(String key, int exp, Object value)`**:只有当 key 已存在时,才替换其值。 - **`append(String key, Object value)`** 和 **`prepend(String key, Object value)`**:在已存在 key 的值后或前面追加...
在Python编程语言中,字典(dict)是一种非常重要的数据结构,它允许我们通过键(key)来存储和检索值(value)。在这个场景中,讨论的是当字典的值是列表(list)时如何进行更新。`update()`方法是Python字典提供的...
8. **SETRANGE key offset value**:将键中存储的字符串的一部分替换为新的值。 9. **MGET key [key ...]**:批量获取多个键的值。 10. **MSET key value [key value ...]**:同时设置多个键的值。 11. **MSETNX ...
8. `setrange key start string`:替换字符串的一部分。 9. `setex key time value`:设置键值对,同时设置过期时间(单位为秒)。 10. `setnx key value`:如果键不存在,设置键值对,否则不执行。 11. `mset keys....
8. Map 函数调用 emit(key,value) 遍历集合中所有的记录,将 key 与 value 传给 Reduce 函数进行处理。 9. Map 函数和 Reduce 函数是使用 Javascript 编写的,并可以通过 db.runCommand 或 mapreduce 命令来执行 ...
Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。 Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。 GridFS是...
<token key="CHANNEL" value="${channel}"/> ``` 在这里,`${channel}`是Ant中的属性,会在每次打包时根据实际渠道值替换。 5. **多渠道循环打包** 使用Ant的`for`循环或者`subant`任务来遍历所有渠道,并...
INI文件由一系列节(Section)和键值对(Key-Value Pairs)组成,结构清晰,易于解析。每个节以方括号`[]`括起来,键值对则以等号`=`分隔。例如: ```ini [Section1] key1=value1 key2=value2 [Section2] keyA=...