zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 1.1. 不个网页title保存成个个文件的时候儿有无效字符的问题... 1

2023-09-14 09:03:25 时间

Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode

 

1.1. 不个网页title保存成个个文件的时候儿有无效字符的问题... 1

1.2. 替换为中文全角符号(推荐,可读性最好) 1

1.3. 使用转义(推荐)... 1

1.4. 使用urlencode模式 (最简单,可读性一般) 1

2. Code 1

2.1. Code--全角符号 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;

}