在读取文件名

时间:2017-05-23 10:02:58

标签: java string character filenames invalid-characters

我需要在创建文件时将无效字符映射到其他字符,如“/”到“_”(正斜杠到下划线),因为文件名不允许放斜线,问题,双引号等。

假设我有

String name = "Message Test - 22/10/2016";

现在我想通过使用上面的字符串来编写一个文件,但由于斜杠它会产生错误。

所以我想在编写文件时将所有无效字符的斜杠映射到任何其他字符。写完之后,我需要阅读文件的所有名称。显示在页面上。

我如何映射字符,因此文件名称

Message_Test_-_22-10-2016

当我在网上展示时,我需要将文件名作为原始名称返回,如

Message Test - 22/10/2016

我正在使用java。任何人都可以帮助我,我怎么能开始编写这种方法或者是否有任何API或者是否有任何其他方法。

我不想将数据库用于与原始文件名相关的别名文件名

2 个答案:

答案 0 :(得分:0)

  

我需要将无效字符映射到其他字符,如" /"到" _"

它不够健壮,因为它假设你从不在文件名中使用_字符 如果您使用它,如何知道存储为my_file的文件是否应在您的应用中显示为my_filemy/file

我认为更可靠的方法是拥有一个文件(例如JSON或XML),它存储每个文件的两个属性:

  • 存储的文件名
  • 在您的应用程序中表示它的可视名称

它需要一个额外的文件,但它使事情变得更加清晰。

答案 1 :(得分:0)

您可以使用地图存储映射:

E.g。

Map<Character,Character> map = new HashMap<Character,Character>();
map.put('/','_');

然后替换1遍历中的字符:

for(int i=0;i<str.length();i++){
  char c = str.charAt(i); 
  if( map.containsKey(c) )
    str.replace(c,map.get(c));
}