【无标题】

记录日常定义的方法

后面在处理问题虽然不能找到一样的解决方法,但是这个可以作为一个参照思路参照
经常更新。。。

1、 将经纬度信息(字符串)转为具体的数据

有的时候可以直接调用某个属性值就可以获取到信息,但是拿到的很多时候是一串字符串,如:“E:-23.2319 N:21.2346”,需要转为单个double类型,存储到数据库中。

思路:1、开始想的直接使用处理字符串的split()方法先分两个字符串,每一个字符串再使用replace方法替换掉非数字部分,获得纯数字的字符串然后遍历每一个转为双精度,经纬度有4个小数,就再/10000 。(这种方法可以解决问题但是复杂不推荐使用)
2、分隔成两个字符串可以直接使用replace方法,替换非数字、句号、负号的内容。再将数据传到Double.parseDouble()方法内直接转为double

/**
     * 
     * @param target 需要的是经度还是纬度
     * @return 返回目标数据
     */
    private static double GPS(String target){
        double resLongitude=0,resLatitude=0;
        // 这边获取到GPS的数据的字符串
        String[] gps = "E:hg-ff N:10.3221".split(" ");
        // 去除字符串中的非数字、句号、符号(下面的第一个参数为一个正则表达式)
        //正则表达式为 "[^\d-.]"。方括号内的尖头 (^) 符号表示匹配应该被反转,
        //因此正则表达式将匹配任何不是数字,负号或句点的字符。
        //反斜杠 (\) 用于转义字符 d 和句点 (.),因为它们在正则表达式中具有特殊含义
        String temp1 = gps[0].replaceAll("[^\\d\\.-]", "");
        String temp2 = gps[1].replaceAll("[^\\d\\.-]", "");
        // 将字符串转为double类型
        resLongitude = Double.parseDouble(temp1);
        resLatitude = Double.parseDouble(temp2);
        // Return the requested coordinate
        if (target.equalsIgnoreCase("longitude")) {
            return resLongitude;
        } else {
            return resLatitude;
        }
    }

2、将指定的路径的文件或者文件夹压缩为一个压缩包

/**
     * 压缩给定的文件夹到给定的目标路径(上传日志文件压缩包)
     * @param srcFolder 要压缩的文件夹
     * @param destZipFile 压缩后的目标路径(包括文件名和.zip后缀) 如:C:\Users\Documents\myzipfile.zip(路径需要存在否则回报错)
     *
     * @throws IOException 如果发生IO错误
     * 方法内部会创建一个ZipOutputStream对象,用于将文件夹压缩成Zip文件。之后会调用addFolderToZip()方法将srcFolder文件夹中的文件添加到ZipOutputStream中,最后将压缩文件写入磁盘。
     * 请注意,在 Android 开发中,压缩和解压缩文件通常使用第三方库,如 Apache Commons Compress。本方法没有使用第三方库,而是通过 Java 自带的 ZipOutputStream 类来实现压缩功能。
     */
    // 压缩文件夹
    public static void zipFolder(String srcFolder, String destZipFile) throws Exception {
        ZipOutputStream zip = null;
        FileOutputStream fileWriter = null;

        fileWriter = new FileOutputStream(destZipFile);
        zip = new ZipOutputStream(fileWriter);

        addFolderToZip("", srcFolder, zip);
        zip.flush();
        zip.close();
    }

    // 添加文件夹到压缩文件
    private static void addFolderToZip(String path, String srcFolder, ZipOutputStream zip)
            throws Exception {
        File folder = new File(srcFolder);

        for (String fileName : folder.list()) {
            if (path.equals("")) {
                addFileToZip(folder.getName(), srcFolder + "/" + fileName, zip);
            } else {
                addFileToZip(path + "/" + folder.getName(), srcFolder + "/" + fileName, zip);
            }
        }
    }

    // 添加文件到压缩文件
    private static void addFileToZip(String path, String srcFile, ZipOutputStream zip) throws IOException, Exception {
        File folder = new File(srcFile);
        if (folder.isDirectory()) {
            addFolderToZip(path, srcFile, zip);
        } else {
            byte[] buf = new byte[1024];
            int len;
            FileInputStream in = new FileInputStream(srcFile);
            zip.putNextEntry(new ZipEntry(path + "/" + folder.getName()));
            while ((len = in.read(buf)) > 0) {
                zip.write(buf, 0, len);
            }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值