记录日常定义的方法
后面在处理问题虽然不能找到一样的解决方法,但是这个可以作为一个参照思路参照
经常更新。。。
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);
}
}
}