1、Commons-io工具包(需要手动导包)
常见方法:
与流相关的方法
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class Test1 {
public static void main(String[] args) throws IOException {
//先关联本地文件
File file1 = new File("F:\\Java基础\\Test02\\aa\\copy.txt");
File file2 = new File("F:\\Java基础\\Test02\\aa\\copy1.txt");
FileUtils.copyFile(file1,file2);
}
}
2、Hutool工具包
官方地址:https://www.hutool.cn/
帮助文档:https://apidoc.gitee.com/dromara/hutool/
3、网络爬虫
3.1、获取姓氏的网址:https://hanyu.baidu.com/shici/detail?pid=0b2f26d4c0ddb3ee693fdb1137ee1b0d
男生姓名:http://www.haoming8.cn/baobao/10881.html
女生姓名:http://www.haoming8.cn/baobao/7641.html
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test1 {
public static void main(String[] args) {
String familyNameNet = "https://hanyu.baidu.com/shici/detail?pid=0b2f26d4c0ddb3ee693fdb1137ee1b0d";
String boyNameNet = "http://www.haoming8.cn/baobao/10881.html";
String girlNameNet = "http://www.haoming8.cn/baobao/7641.html";
String familyNameStr = null;
String boyNameStr = null;
String girlNameStr = null;
//获取姓氏和姓名的正则表达式
String familyName = "(.{4})(,|。)";
//爬取数据
try {
familyNameStr = webSpider(familyNameNet);
boyNameStr = webSpider(boyNameNet);
girlNameStr = webSpider(girlNameNet);
} catch (IOException e) {
e.printStackTrace();
}
ArrayList<String> familyNameList = getDate(familyNameStr, familyName, 1);
//对集合进行遍历
for (String s : familyNameList) {
System.out.println(s);
}
}
//爬取数据的方法
public static String webSpider(String net) throws IOException {
//定义一个StringBuilder来拼接字符串
StringBuilder sb = new StringBuilder();
//创建URL对象
URL url = new URL(net);
//连接上网址
final URLConnection con = url.openConnection();
//读取数据,这里有一个小细节,就是我们调用的是字节流对象,如果有中文的时候就会出现乱码,所以我们需要将它转换为字符流对象
InputStreamReader isr = new InputStreamReader(con.getInputStream());
int ch = 0;
while ((ch = isr.read()) != -1) {
//直接将读取到的数据拼接到StringBuilder对象中
sb.append((char) ch);
}
//关闭资源
isr.close();
//返回字符串
return sb.toString();
}
/**
* 格式化数据的方法
*
* 参数一:表示需要被格式化的字符串
* 参数二:表示正则表达式
* 参数三:表示获取正则表达式的那部分内容,例如(.{4})(,|。)就被分成了两个部分,如果写1,则是获取(.{4})的内容
*
* */
private static ArrayList<String> getDate(String familyNameStr, String regex, int index) {
ArrayList<String> list = new ArrayList<>();
//按照正则表达式去除不符合要求的数据
Pattern pattern = Pattern.compile(regex);
//按照pattern中的规则到字符串中获取数据
Matcher matcher = pattern.matcher(familyNameStr);
while (matcher.find()){
final String group = matcher.group(index);
//将数据添加到数组中
list.add(group);
}
return list;
}
}