【java小工具】批量处理txt文件中的数据

   /**
     * 批量更新
     *
     * @return
     */
    @ResponseBody
    @RequestMapping("/updateNumber")
    public void updateNumber() {
        String seqId = UUID.randomUUID().toString();
        //设置所需参数
        //subts,变更时间,ts
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMddHHmmss");
        String ts=sdf.format(new Date());
        String subts=sdf2.format(new Date());
        XzDataBindVo bindVo=new XzDataBindVo();
        bindVo.setTs(ts);
        bindVo.setSubts(subts);
//        bindVo.setSubId("C1129X028X0278563933-00-0-XZGF-GXI");
        bindVo.setSmsmtchannel("4");
        //读取数据
        //String filename = "/src/main/resources/data.txt";
		String path =this.getClass().getClassLoader().getResource("./data.txt").getPath();
		Map<Integer, String> fileMaps = readTxtFile(path);
		int num = fileMaps.size();// 行数
		for (int i = 0; i < num; i++) {
			String subId = fileMaps.get(i);
            bindVo.setSubId(subId);
            //调用修改接口
            try {
               xzBindService.updateBind(loggerSingleWork, bindVo, seqId);
            } catch (Exception e) {
				System.out.println("catch a exception");
            }
		}
    }
    public static Map<Integer,String> readTxtFile(String filePath) {

        //存放内容的map对象
        Map<Integer,String> filemaps = new HashMap<Integer,String>();
        try {
            String encoding = "GBK";
            File file = new File(filePath);
            int count = 0;//定义顺序变量
            if (file.isFile() && file.exists()) { // 判断文件是否存在
                InputStreamReader read = new InputStreamReader(
                        new FileInputStream(file), encoding);// 考虑到编码格式
                BufferedReader bufferedReader = new BufferedReader(read);
                String lineTxt = null;
                while ((lineTxt = bufferedReader.readLine()) != null) {//按行读取
                    if(!"".equals(lineTxt)){
                        String reds = lineTxt.split("\\+")[0];//对行的内容进行分析处理后再放入map里。
                        filemaps.put(count, reds);//放入map
                        count ++;
                    }
                }
                read.close();//关闭InputStreamReader
                bufferedReader.close();//关闭BufferedReader
            } else {
                System.out.println("not find");
            }
        } catch (Exception e) {
            System.out.println("wrong");
            e.printStackTrace();
        }
        return filemaps;
    }

}
 

 

批量删除行:包括删除前后行、删除连续行、删除奇数行、删除偶数行、删除空白行、删除重复行、删除特定行、删除含有关键字的行。 1、 批量删除前后行:删除多个文本文件最前面几行,或者最后面几行; 2、批量删除连续行:删除文本文件 连续行,3 19(则删除3-19行的内容) 3、批量删除奇数行:删除文本文件奇数的行,1、3、5、7…… 4、批量删除偶数行:删除文本文件偶数的行,2、4、6、8…… 5、批量删除空白行:删除文本文件 只含有空格或者制表符或者没有任何内容的行 6、批量删除重复行:重复行是针对单个文件来说的,删除重复行之后 文件内容的顺序保持源文件行的顺序,不会打乱。 7、批量删除特定行:特定行是自定义行,目前不支持省略输入,支持输入固定数字 例如: 1,3,7,10,20 8、批量删除含有关键字的行:删除含有关键字的行,可以是一个关键字,可以是多个关键字,(多个关键字: 某一行含有的多个关键字) 批量删除文本:包括删除文本、替换文本、删除行首数字、删除行首尾多少个字符。 9、批量删除数据(文本):删除多个文件含有特定文本。 10、批量替换文本:多个文件批量替换文本 11、删除行首数字:删除行首的数字,一般对于行首递增的数字有明显效果。 12、批量删除行首字符:删除行首自定义多少个字符,一个字母,一个数字,一个汉字,一个标点都是一个字符。如果你不知道或者不想数多少个字符,可以让程序计算。 13、批量删除行尾字符:同上。 合并:包括普通合并、合并+数据、隔行合并、左右合并4种。 14、合并:普通合并,就是正常的多个文本文件进行合并,按照行的合并,第一个文件的最后一行,和第二个文件第一行不在同一行,是两个连续的行。以此类推。(好像是废话) 15、合并+数据:多个文件合并的时候直接添加数据,可以是多行数据。 16、合并+文件名:多个文件合并的时候直接添加文件名(不包括路径,不包括后缀名),可以是多行数据。 17、合并+数据+文件名:多个文件合并的时候先添加数据,再添加文件名(不包括路径,不包括后缀名)。 18、隔行合并:多个文件进行隔行合并。如果有3个文件进行隔行合并, 新文件的行的构成:File1的第一行 + File2的第一行 + File3的第一行 + File1的第二行 + File2的第二行 + File3的第二行 + …… 19、左右合并:左右合并因为需求不高,目前仅支持2个文件左右合并;如果想要进行多个文件左右合并,可以进行多次左右合并。 左右合并:原谅我这样命名下面说明 新文件构成:File1的第一行+ File2的第一行 作为新文件的第一行。 File1的第二行+ File2的第二行 作为新文件的第二行。 ……………………………… 间可以自定义添加数据。 批量拆分:多个文件可以按照固定个数拆分、固定行数拆分、拆分奇偶行等模式进行拆分。 20、批量拆分,设置拆分新文件的个数:拆分成固定的个数。 说明:按照行进行拆分,不会把一行拆分成两个! 21、批量拆分,设置每个新文件的行数:拆分成多个文件。 22、批量拆分,拆分奇偶行:奇数的行拆分到一个文件,偶数的行拆分到一个文件。 批量添加数据:可以批量向文本文件最前面或者最后面添加数据、可以向行首尾添加数据、 可以向文件添加文件名。 23、批量添加文本(数据)到文件首尾:可以添加多行文本到文件的首尾,支持添加过的不进行重复添加,(判断是否重复添加的标准是某一行完全一样,包括空格等符号)。 24、批量添加文本到行首尾:可以批量添加文本到每一行的最前面或者最后面。支持添加递增的数字。递增数字:就是每一行添加的数字不一样,或者叫做行号 25、批量添加文件名到文件首行:添加的文件名可以自定义包含路径和包含扩展名。 目前支持添加到行首,文件名前后可以自定义添加数据 其他处理方式:包括添加文件夹、重命名、恢复备份文件、查找个数、转换编码、重新排序。 26、添加文件夹,就是直接添加一个文件夹,说明添加文件或者添加文件夹的时候,如果已经存在则跳过添加。说明:添加文件夹的时候,不会将子文件夹添加进来。 27、重命名:并不是自定义文件名,这个名字是根据每个文件的第一行,并且提取每个文件的第一行作为新的文件名,旧的文件名也可以自定义保留。 说明:如果第一行没有合法的数据可以作为文件名,则顺延至第二行,以此类推。 28、恢复备份文件:程序会产生备份文件,如果处理后的文件不能满意,则恢复到原始状态。 说明:程序产生的备份文件是源文件名+“.bak”的形式。 注意:用户可以自定义要不要备份文件,程序如果出现多次处理都要产生备份文件,每次产生备份文件先删除之前的备份文件。然后生成新的备份文件。(这个理念根据editplus生成备份文件的方式) 恢复备份文件:程序会将.bak后缀的文件恢复到去掉.bak后缀。如果新文件已经存在,则删除之后,再恢复。 (数据无价,建议用户自己先备份,然后使用本程序,如果处理的结果满意,则再考虑删除源文件) 29、批量查找个数:批量从多个文本文件查找输入文本的个数,程序的状态一栏会显示找到了多少 30、批量转码:多个文本文件批量转成自己想要的文件编码: 常见的文件编码ANSI, Unicode, Unicode big endian, UTF-8。这四种编码类型都可以用windows自带的记事本打开。批量转换编码,方便在其他设备上查看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值