栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

代码整理2:定时从目录中获取txt文件并对文件中的数据进行处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

代码整理2:定时从目录中获取txt文件并对文件中的数据进行处理

代码 1. 获得目录下所有txt文件的路径
 public List getFileList(String dirPath){
 		//dirPath是由配置文件导入的文件夹所在路径
        File file = new File(dirPath);
        List result = new ArrayList();
        //file是文件夹且不为空
        if(file.isDirectory() && file.list().length > 0){
            //获得文件夹里的所有txt文件
            File[] dirList = file.listFiles(new FileFilter() {
                        @Override
                        public boolean accept(File file1) {
                            if(file1.isFile() && file1.getName().indexOf("txt") > -1){
                                return true;
                            }else{
                                return false;
                            }
                        }
                    }
            );
            for(int i = 0; i < dirList.length; i++){
                result.add(dirList[i].getPath());
            }
        }
        return result;
    }

2. 从txt文件中读取手机号
 public String txt2String(File file){
        StringBuilder sb = new StringBuilder();
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String s = null;
            //项目中每一个file里都是按行分布的手机号,这里将手机号取出并以逗号间隔组成字符串
            while((s = br.readLine()) != null){
                sb.append(s + ",");
            }
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sb.toString().substring(0, sb.length() - 1);
    }
3. 根据路径创建文件
	//创建txt文件
    public void createFile(String filepath){
        File file = new File(filepath);
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
4. 主方法

小工具使用springboot写成,并使用了@EnableScheduling注解完成定时任务,此处不多介绍。

@Scheduled(cron = "${cronTimer}")
@PostConstruct
public void method(){
		//得到由txt文件路径组成的list
        List list = getFileList(dirPath);
        String str = null;
        String res = null;
        if(list.size() <= 0){
            return;
        }else{
            for(int i = 0; i < list.size(); i++){
                //循环获得每个txt文件,并将每个txt文件中的手机号取出并以逗号间隔组成字符串
                File file = new File(String.valueOf(list.get(i)));
                if(!file.exists()){
                    continue;
                }
                str = txt2String(file);
                String[] num = str.split(",");
                //failNum用来存储后续处理失败的数据
                List failedNum = new ArrayList<>();
                for(int j = 0; j < num.length; j++){
                    try {
                    	//对取出的数据进行处理
                        ******
                        if(!result){
                            failedNum.add(num[j]);
                        }
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                }
                if(failedNum.size() > 0){
                    try {
                        FileWriter fileWriter = new FileWriter(file);
                        fileWriter.write("");
                        fileWriter.flush();                           
                        StringBuilder stringBuilder = new StringBuilder();
                        for(int k = 0; k < failedNum.size(); k++){
                            stringBuilder.append(failedNum.get(k));
                            if(k != failedNum.size() - 1){
                                stringBuilder.append(System.getProperty("line.separator"));
                            }
                        }
                        fileWriter.write(stringBuilder.toString());
                        fileWriter.close();
                        //处理失败的数据存回原来的目录,并将目录重命名留待后续处理                                                                                                                                                    
                        if(!file.getName().contains("_failed_")){
                            file.renameTo(new File(file.getParent() + System.getProperty("file.separator") + "_failed_" + file.getName()));
                        }

                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }else{
					return;
	            }
}

ps:今天时间太晚了,大概先整理成这样,之后如果有时间再对这段代码进行整理优化吧。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445241.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号