有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在创建文件时将无效字符映射为有效字符,在读取文件名时将其映射回原始名称

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

如果我有

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

现在我想用上面的字符串来写一个文件,但由于斜杠的缘故,它给出了一个错误

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

不知怎的,我映射了字符,所以文件名是

Message_Test_-_22-10-2016

当我在web上显示它时,我需要返回文件名作为原始名称,如

Message Test - 22/10/2016

我正在使用java。有人能帮我解决这个问题吗?我如何开始编写这个方法,或者有没有api,或者有没有其他方法

我不想使用数据库将别名文件名与原始文件名关联起来


共 (2) 个答案

  1. # 1 楼答案

    I need to map invalid characters to some other characters like "/" to "_"

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

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

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

    它需要一个额外的文件,但它使事情更加清楚

  2. # 2 楼答案

    您可以使用映射来存储映射:

    例如

    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));
    }