`
your233
  • 浏览: 276631 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

批量替换Key和value

    博客分类:
  • java
阅读更多

 /**
 * 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();
   }
  }
 }
}

分享到:
评论

相关推荐

    Office办公自动化-如何批量替换Word文档中的指定内容(包括页眉)-Python实例源码.zip

    本教程将聚焦于使用Python实现Office办公自动化,具体来说,是如何利用Python来批量替换Word文档中的指定内容,包括页眉部分。这个过程涉及到Python的几个重要库,如`python-docx`和`os`。 `python-docx`是一个用于...

    【JavaScript源代码】替换json对象中的key最佳方案.docx

    在JavaScript中,替换JSON对象中的键(key...选择哪种方法取决于具体需求,比如是否需要保持键的原始顺序、是否需要批量替换,以及是否能引入额外的库。在实际开发中,要根据项目的规模和性能要求,灵活运用这些方法。

    redis安装与基本应用

    - **mset key1 value1 key2 value2...**: 批量设置键值对。 - **mget key1 key2...**: 批量获取键值对。 - **setrange key offset value**: 替换指定偏移量的字符串。 - **getrange key start stop**: 获取字符串的...

    PHP向MYSQL数据库批量添加数据

    foreach ($_POST as $key =&gt; $value) { // 使用预定义的检查函数处理可能的注入 $data[$key] = check($_POST[$key]); // 构建SQL插入语句 $sql = "INSERT INTO test_table SET $key = '" . $data[$key] . "'"; ...

    使用Python and shell 批量下载哨兵一号(sentinel-1)的精密轨道数据

    # 使用你的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 ...

    Redis操作命令总结

    5. `setrange key offset value`:替换或扩展字符串,将指定偏移量的字节设置为新值。 6. `append key value`:在键的现有值后追加值。 7. `getrange key start stop`:获取字符串指定范围内的字节。 8. `getset key...

    最新的Android Sdk 使用Ant多渠道批量打包的实现工程

    总结来说,Android SDK结合Ant进行多渠道批量打包是通过创建一个Ant构建脚本,遍历渠道列表,为每个渠道生成包含特定标识的APK,然后使用Android SDK的`apksigner`和`zipalign`工具进行签名和优化。这种方法虽然相对...

    键值更换器键值更换器

    键值更换器可以帮助用户快速定位这些键值,并进行批量替换,无需手动逐行搜索和编辑。 在使用"键值更换器"时,首先需要了解目标文件的格式,因为不同的文件可能需要不同的解析方式。例如,XML文件的键值对可以通过...

    Java通过POI读取Excel遍历数据,批量生成word文档

    在遍历Excel数据时,我们使用` XWPFDocument `的` createParagraph `和` createRun `方法动态地替换占位符,生成新的Word文档: ```java // 假设我们有一个Map, String&gt; excelData存储了从Excel读取的数据 Map, ...

    itext-pdf-replace.zip

    如果需要批量替换,可以将多个替换规则放入`HashMap`中,然后在循环中逐一应用。在实际应用中,你可能还需要处理更多复杂情况,如处理非表单文本、考虑文本的格式和位置等。`iText`提供了丰富的API,使得这些任务变...

    Redis实战 中文完整版.pdf

    设置指定key的value字符串从指定的offset开始替换。 2.2.5 mset 批量设置多个key-value对。 2.2.6 msetnx 类似mset,但只有所有给定的key都不存在时,才会执行设置操作。 2.2.7 get 获取存储在给定key中的值。 ...

    xmemcached api doc

    - **`replace(String key, int exp, Object value)`**:只有当 key 已存在时,才替换其值。 - **`append(String key, Object value)`** 和 **`prepend(String key, Object value)`**:在已存在 key 的值后或前面追加...

    python中dict的value为list时更新(csdn)————程序.pdf

    在Python编程语言中,字典(dict)是一种非常重要的数据结构,它允许我们通过键(key)来存储和检索值(value)。在这个场景中,讨论的是当字典的值是列表(list)时如何进行更新。`update()`方法是Python字典提供的...

    Redis支持的数据类型、相关命令和功能

    8. **SETRANGE key offset value**:将键中存储的字符串的一部分替换为新的值。 9. **MGET key [key ...]**:批量获取多个键的值。 10. **MSET key value [key value ...]**:同时设置多个键的值。 11. **MSETNX ...

    redis命令整理1

    8. `setrange key start string`:替换字符串的一部分。 9. `setex key time value`:设置键值对,同时设置过期时间(单位为秒)。 10. `setnx key value`:如果键不存在,设置键值对,否则不执行。 11. `mset keys....

    Mongodb入门教程、示例+Spring Boot完整示例+聚合.docx

    8. Map 函数调用 emit(key,value) 遍历集合中所有的记录,将 key 与 value 传给 Reduce 函数进行处理。 9. Map 函数和 Reduce 函数是使用 Javascript 编写的,并可以通过 db.runCommand 或 mapreduce 命令来执行 ...

    mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi

    Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。 Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。 GridFS是...

    android ant 多渠道批量打包,利用ant 可实现多渠道,批量打包。

    &lt;token key="CHANNEL" value="${channel}"/&gt; ``` 在这里,`${channel}`是Ant中的属性,会在每次打包时根据实际渠道值替换。 5. **多渠道循环打包** 使用Ant的`for`循环或者`subant`任务来遍历所有渠道,并...

    unity操作ini插件

    INI文件由一系列节(Section)和键值对(Key-Value Pairs)组成,结构清晰,易于解析。每个节以方括号`[]`括起来,键值对则以等号`=`分隔。例如: ```ini [Section1] key1=value1 key2=value2 [Section2] keyA=...

Global site tag (gtag.js) - Google Analytics