Windows限制文件名

今天随手写了一个分隔小说章节的系统,突然出现了这个bug

java.io.FileNotFoundException: book\第27章我\说:“我吗?”.txt (系统找不到指定的路径。)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
at com.star.literature.SplitTextByChapter.saveChapterToFile(SplitTextByChapter.java:90)
at com.star.literature.SplitTextByChapter.splitTextByChapter(SplitTextByChapter.java:38)
at com.star.literature.SplitTextByChapter.main(SplitTextByChapter.java:12)
java.io.FileNotFoundException: book\第459章固执j一(三*)2韭陾择了.txt (文件名、目录名或卷标语法不正确。)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
at com.star.literature.SplitTextByChapter.saveChapterToFile(SplitTextByChapter.java:90)
at com.star.literature.SplitTextByChapter.splitTextByChapter(SplitTextByChapter.java:38)
at com.star.literature.SplitTextByChapter.main(SplitTextByChapter.java:12)

这个问题是 Windows 文件系统对文件名的限制,和代码无关

Windows 不允许在文件名中使用以下字符:

\ / : * ? " < > |

解决方法就是把非法字符替换掉,比如

public static String sanitizeFileName(String name) {
    // Windows 不允许的字符 \ / : * ? " < > |
    return name.replaceAll("[\\\\/:*?\"<>|]", "_");
}

即可。

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇