Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 1.1. 不个网页title保存成个个文件的时候儿有无效字符的问题... 1
Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode
1.1. 不个网页title保存成个个文件的时候儿有无效字符的问题... 1
1.4. 使用urlencode模式 (最简单,可读性一般) 1
1.1. 不个网页title保存成个个文件的时候儿有无效字符的问题...
通常两个处理方式::: replace 成个空格或者使用转义(推荐)...
windows的文件名称无效字符.../\:* <>\"| 斜杠,反斜杠,冒号,星号,问号,左右尖括号 双引号 竖杠
尖括号,双引号,树杠...而且...“.” 一个点和 “..”双点分别用来表示“当前目录”和“父目录”, 因此它们也不能作为文件名
Linux的基本上只有反斜杠...
1.2. 替换为中文全角符号(推荐,可读性最好)
1.3. 使用转义(推荐)...
1.4. 使用urlencode模式 (最简单,可读性一般)
2. Code
2.1. Code--全角符号
/hislog/src/main/java/com/attilax/io/FileService.java
import org.apache.commons.io.FileUtils;
public class FileService {
public static void main(String[] args) throws IOException {
String oriname="C:\\0wkspc\\hislog\\src\\main\\java\\com\\attilax\\io\\filenameEncodeTest.txt";
String t=FileUtils.readFileToString(new File(oriname));
String newfilename=fileNameEncode_readableBest(t);
FileUtils.writeStringToFile(new File("C:\\0wkspc\\hislog\\src\\main\\java\\com\\attilax\\io\\"+newfilename+".txt"), "data");
System.out.println("--");
}
/**
* but cant convert to ori
* @param filenameOri
* @return
*/
public static String fileNameEncode_readableBest(String filenameOri) {
filenameOri=filenameOri.replaceAll("\\\\", "、");
filenameOri=filenameOri.replaceAll("\\/", "、");
filenameOri=filenameOri.replaceAll("\\|", "、");
filenameOri=filenameOri.replaceAll("\\*", "。");
filenameOri=filenameOri.replaceAll("\\?", "?");
filenameOri=filenameOri.replaceAll("\"", "“");
filenameOri=filenameOri.replaceAll("<", "《");
filenameOri=filenameOri.replaceAll(">", "》");
filenameOri=filenameOri.replaceAll(":", ":");
return filenameOri;
}
public static String fileNameEncode(String filenameOri) {
// /\:* <>\"|
if(filenameOri.equals("."))
return "%2E";
if(filenameOri.equals(".."))
return "%2E%2E";
Map<String, String> mp = (Map<String, String>) new ClosureNoExcpt() {
@Override
public Object execute(final Object arg0) {
final Map<String, String> mp = new HashMap<String, String>() {
{
this.put("*", "%2A");
}
};
final String[] as = strUtil.SplitByNone("/\\:?<>\"|");
for (final String s : as) {
try {
mp.put(s, URLEncoder.encode(s, "utf-8"));
} catch (final UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return mp;
}
}.execute(null);
String[] as = strUtil.SplitByNone(filenameOri);
String fname2 = "";
for (String s : as) {
fname2 += mp.get(s) == null ? s : mp.get(s);
}
return fname2;
}