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

最近在做爬虫项目,自动创建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,然后去手动创建文件,提示
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了

你可能感兴趣的:(javase)