简单的file获取文本内容且, 修改文本内容(java8)

博主因新公司表设计混乱,需手动编写脚本将原表字段获取后写入新表。介绍了实现思路,即按特定顺序处理原SQL,获取行并截取内容写入txt。还给出了Java 8读取和写入的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题主, 因入职新公司, 表设计混乱, 不得不手动写一个小脚本,获取所有字段后,重新写入至新表中;

思路

顺序如下

f5094b9cdfe2e2328193c50d2ebcc0066a7.jpg

原sql

具体, 获取行 , 根据行开头的"  ,"截取内容, 重新输入到txt, 中就可以了; 

1a0cafc3613ae8838eb4a50881d5b7f839f.jpg

代码

这里就写下 java8 的如何读取和写入吧

package xxx.xxx.xx;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author :wuxw
 * @ClassName : test
 * @description: TODO
 * @date :2019/3/22 11:54
 * @version: 1.0
 */
public class test {
    public static void  main(String[] args){
        String filePath = "e:/textDb.txt";
        List<String> lineLists = readTextFile(filePath);
        // 将每行内容分割 最后输出到文本
        Map<String,ColumnBean> tempMap = new HashMap<String,ColumnBean>();
        lineLists.forEach(i ->{
            String[] temp = i.split("\\s+");
            ColumnBean tempBean = new ColumnBean();
            if(temp.length>0){
                tempBean.setCode(temp[1]);
                tempBean.setCtype(temp[2]);
                tempBean.setIsEmpty(temp[3]);
                if(temp.length == 6 ){
                    tempBean.setCommont(temp[5]);
                }
                if(temp.length == 7 ){
                    tempBean.setNote(temp[6]);
                }
                if(!tempMap.containsKey(temp[1])){
                    tempMap.put(temp[1],tempBean);
                }
            }
        });
        for(ColumnBean c : tempMap.values()){
            System.out.println(c.toString()+"----------");
        }
        List<ColumnBean> mapKeyList = new ArrayList<ColumnBean>(tempMap.values());
        mapKeyList.forEach(i -> {
            System.out.println("--------"+i.toString());
        });
        beanToTxt("e:/beanDb3.txt",mapKeyList);
    }
    /**
     * @Author wuxw
     * @Description 行内容版 - 将字符串内容写入文本
     * @Date 17:12 2019/3/22
     * @Param [filePath, content]
     * @return void
     **/
    public static void contentToTxt(String filePath, String content) {
        try{
            BufferedWriter writer = new BufferedWriter(new FileWriter(new File(filePath),true));
            writer.write(content);
            writer.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        System.out.println("文件写入完毕,文件路径:"+filePath);
    }
    /**
     * @Author wuxw
     * @Description 数组循环写入文本
     * @Date 17:12 2019/3/22
     * @Param [filePath, listStr]
     * @return void
     **/
    public static void contentToTxt(String filePath, List<String> listStr) {
        try{
            BufferedWriter writer = new BufferedWriter(new FileWriter(new File(filePath),true));
            listStr.forEach(str ->{
                try {
                    if(str.startsWith("  `")) {
                        writer.newLine();
                        writer.write(str);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
            writer.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        System.out.println("文件写入完毕,文件路径:"+filePath);
    }
    /**
     * @Author wuxw
     * @Description bean转成行输出至txt
     * @Date 17:11 2019/3/22
     * @Param [filePath, listStr]
     * @return void
     **/
    public static void beanToTxt(String filePath, List<ColumnBean> listStr) {
        try{
            BufferedWriter writer = new BufferedWriter(new FileWriter(new File(filePath),true));
            listStr.forEach(str ->{
                try {
                        writer.newLine();
                        writer.write(str.toString());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
            writer.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        System.out.println("文件写入完毕,文件路径:"+filePath);
    }
    /**
     * @Author wuxw
     * @Description 根据文件路径读取文件内容
     * @Date 17:10 2019/3/22
     * @Param [file]
     * @return java.util.List<java.lang.String>
     **/
    public static List<String> readTextFile(String file){
        //读取文件
        List<String> lineLists = null;
        try{
            lineLists = Files.lines(Paths.get(file), Charset.defaultCharset())
                    .flatMap(line -> Arrays.stream(line.split("\n")))
                    .collect(Collectors.toList());
        } catch (IOException e) {
            //Your exception handling here
        }
        return lineLists;
    }
}

 

/**
 * @author :wuxw
 * @ClassName : ColumnBean
 * @description: TODO
 * @date :2019/3/22 15:12
 * @version: 1.0
 */
@Data
public class ColumnBean {
    private String code;
    private String ctype;
    private String isEmpty;
    private String commont;
    private String note;

    public String toString(){
        return code+" "+ctype+" "+isEmpty+" "+commont+" "+note;
    }
}

效果

253c511b9dd6d7131ac8072a7b3434403e2.jpg

转载于:https://my.oschina.net/java1314/blog/3026435

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值