4 * License : The MIT License
\r
5 * Copyright(c) 2010 MikuToga Partners
\r
8 package jp.sourceforge.mikutoga.corelib;
\r
11 * Windowsに特化したFileユーティリティ。
\r
13 public final class WinFile {
\r
15 public static final char SEPARATOR_CHAR = '\\'; // \
\r
16 public static final String SEPARATOR =
\r
17 Character.toString(SEPARATOR_CHAR);
\r
18 public static final String PFX_UNC =
\r
19 SEPARATOR + SEPARATOR; // \\
\r
22 assert '\\' == 0x005c;
\r
30 throw new AssertionError();
\r
34 * Windowsファイル名の正規化を行う。
\r
38 * <li>頭の3回以上連続する\記号は2個の\記号に置き換えられる。
\r
39 * <li>末尾の1回以上連続する\記号は削除。
\r
40 * ただし頭から連続している場合は削除しない。
\r
41 * <li>2回以上連続する\記号は1個の\記号にまとめられる。
\r
42 * ただし頭から連続している場合はまとめない。
\r
44 * @param seq 対象ファイル名
\r
45 * @return 正規化されたファイル名
\r
47 public static String normalizeWinFileName(CharSequence seq){
\r
48 String text = seq.toString();
\r
49 text = text.replaceAll("^\\\\{3,}", "\\\\\\\\");
\r
50 text = text.replaceAll("(.*[^\\\\])\\\\+$", "$1");
\r
51 text = text.replaceAll("([^\\\\])\\\\{2,}", "$1\\\\");
\r