首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对文件操作得一些总结

对文件操作得一些总结

作者头像
用户5927264
发布2021-01-26 11:26:13
3390
发布2021-01-26 11:26:13
举报
文章被收录于专栏:OSChinaOSChina

1.读取txt文件,然后从数据库从查询数据,并且写到txt文件中

public void getPhonehId() {

        List<String> list = new LinkedList<>();
        //1读取数据库中得图片
        try {
            String encoding = "GBK";
            File file = new File("C:\\Users\\Administrator\\Desktop\\name.txt");
            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) {
                    list.add(lineTxt);
                }
                read.close();
            } else {
                System.out.println("找不到指定的文件");
            }
        } catch (Exception e) {
            System.out.println("读取文件内容出错");
            e.printStackTrace();
        }
        System.out.println("文本读取完成:"+list.size()+"==开始查数据库");
        List<Map<String, String>> resoult = new LinkedList<>();

        //方式二:没30000批为一组数据进行取值
        for (int i = 0; i < 4; i++) {
            int start = 30000 * i;
            int end = 30000 * (i + 1);
            if (start > list.size()) {
                start = list.size();
            }
            if (end > list.size()) {
                end = list.size();
            }
            List<String> subList = list.subList(start, end);
            List<Map<String, String>> list1 = houseMapper.selectTBasHouseByFaces(subList);
            List<Map<String, String>> list2 = guardhouseMapper.selectTBasHouseByFaces(subList);
            resoult.addAll(list1);
            resoult.addAll(list2);
            System.out.println("=====完成i组==="+i);
        }

        //方式一:逐个取数据
//        for (String face : list) {
//            Map<String, String> map = houseMapper.selectTBasHouseByFace(face);
//            if(CollectionUtils.isEmpty(map)){
//                map = guardhouseMapper.selectTBasHouseByFace(face);
//            }
//            if(!CollectionUtils.isEmpty(map)){
//                resoult.add(map);
//            }
//        }

        //输出到文件中
        if (resoult.size() > 0) {
            System.out.println("****************************正在写入到磁盘中.......");
            try {
                Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\out.txt", true), "utf-8"), 10240);
                for (Map<String, String> map : resoult) {
                    String hId = (String) map.get("hId");
                    String face = (String) map.get("face");
                    out.write(hId + "\t" + face + "\r");
                }
                out.flush();
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println("****************************写入完成.......");
        }

    }

2 读取数据库中得图片查看是否是有效连接

public void contrast() {

        String path = "E:\\file2\\";

        List<Map<String, Object>> readErrList = new LinkedList<>();

        //获取数据库中得图片
        List<Map<String, Object>> mapList = houseMapper.queryAllHouseImg();

        mapList.parallelStream().forEach(map -> {
            String faceImg = (String) map.get("faceImg");
            String hId = (String) map.get("hId");
            try {
                URL url = new URL(faceImg);
                int start = faceImg.indexOf("housHeadImg/") + 12;
                int end = faceImg.indexOf("?");
//                BufferedImage image = (BufferedImage) ImageIO.read(url);
                if (end > start) {
                    String fileName = path + faceImg.substring(start, end);
                    File file = new File(path + faceImg.substring(start, end));

//                url = new URL(faceImg);
                    DataInputStream dataInputStream = new DataInputStream(url.openStream());

                    FileOutputStream fileOutputStream = new FileOutputStream(new File(fileName));
                    ByteArrayOutputStream output = new ByteArrayOutputStream();

                    byte[] buffer = new byte[10240];
                    int length;

                    while ((length = dataInputStream.read(buffer)) > 0) {
                        output.write(buffer, 0, length);
                    }
                    fileOutputStream.write(output.toByteArray());
                    dataInputStream.close();
                    fileOutputStream.close();
                } else {
                    readErrList.add(map);
                }
            } catch (MalformedURLException e) {
                map.put("err", e.getMessage());
                readErrList.add(map);
            } catch (IOException e) {
                map.put("err", e.getMessage());
                readErrList.add(map);
            }
        });

        System.out.println("****错误数据数量:*****" + readErrList.size());

        //输出到文件中
        if (readErrList.size() > 0) {
            System.out.println("****************************有图片链接无法找到正在写入到磁盘中.......");
            try {
                Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\out.txt", true), "utf-8"), 10240);

                for (Map<String, Object> map : readErrList) {
                    String faceImg = (String) map.get("faceImg");
                    String hId = (String) map.get("hId");
                    String err = (String) map.get("err");
                    out.write(hId + "\t" + faceImg + "\t" + err + "\r");
                }
                out.flush();
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println("****************************写入完成.......");
        }

    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档