java(正则表达式)规范创建Windwos文件名

时间:2022-02-02 20:07:49

最近在做爬虫项目,自动创建Windwos文件,有的时候创建不成功。
看下面的命名就是不成功的

String string = "今<>|:\\\\///\"天\"_3:4/4\\_20*1?7content/2017-06/28/content_16240289.htm";
File file = new File("D:\\"+string);
if (!file.exists()) {
boolean mkdirs = file.mkdirs();
System.out.println(mkdirs);
}

这个打印出来的结果是false,然后去手动创建文件,提示
java(正则表达式)规范创建Windwos文件名

很显然,这需要正则表达式过滤一下文件名字,直接上代码

String string = "今<>|:\\\\///\"\"_3:4/4\\_20*1?7content/2017-06/28/content_16240289.htm";
System.out.println(string);
System.out.println(string.replaceAll("(\"|<|>|(\\|)|/|\\\\|\\*|\\?|:)", ""));

输出结果

今<>|:\\///"天"_3:4/4\_20*1?7content/2017-06/28/content_16240289.htm
今天_344_2017content2017-0628content_16240289.htm

然后在用这个名字去创建Windwos文件就ok了