C# Can';t使用特殊字符保存文本文件

C# Can';t使用特殊字符保存文本文件,c#,file,windows-phone,isolatedstorage,C#,File,Windows Phone,Isolatedstorage,我有一个程序,你可以写笔记,并保存在.txt文件。 每个音符都有标题和文字。 注释的标题是不带“.txt”后缀的文件名。 因此,在我的程序中有一个列表框,其中包含所有注释的标题,单击标题可以阅读注释。 我的问题是我不能用这些字符写标题:\/:*?“|因为文件名中不允许使用它们 我如何解决这个问题?我认为一个解决方案是创建一个只包含文件名的新.txt文件,然后根据行号将文件名与注释关联 有更简单的解决办法吗? 如果是,你能告诉我吗? 谢谢!您可以使用您的唯一字符串维护特殊字符字典,例如: Dict

我有一个程序,你可以写笔记,并保存在.txt文件。 每个音符都有标题和文字。 注释的标题是不带“.txt”后缀的文件名。 因此,在我的程序中有一个列表框,其中包含所有注释的标题,单击标题可以阅读注释。 我的问题是我不能用这些字符写标题:\/:*?“<>|因为文件名中不允许使用它们

我如何解决这个问题?我认为一个解决方案是创建一个只包含文件名的新.txt文件,然后根据行号将文件名与注释关联

有更简单的解决办法吗? 如果是,你能告诉我吗?
谢谢!

您可以使用您的唯一字符串维护特殊字符字典,例如:

Dictionary<string, string> specialCharDictionary = new Dictionary<string, string>();
specialCharDictionary.Add("\\", "Slash");
specialCharDictionary.Add("/", "BSlash");
//....
Dictionary specialCharDictionary=new Dictionary();
添加(“\\”,“斜杠”);
添加(“/”,“b斜杠”);
//....

然后使用它来创建和访问文件名。

您可以将文件转换为XML而不是纯文本,并对实体进行编码。

标题是由用户提供的吗?如果是,有一种简单的方法可以验证标题。只需检查给定标题是否包含一个禁止字符。然后您可以删除它们并使用删除结果,或者您可以向用户显示一条错误消息,说明不允许使用这些字符


提供有关在字符串中查找特殊字符的答案。希望这能有所帮助!

单独索引文件的优点是可以轻松获取所有标题。缺点是,除非您非常小心,否则它可能会过时,并且限制对基础文件系统的访问


就我个人而言,我可能会尝试将每个文本文件的第一行设置为标题,并将文件名设置为经过清理的标题。这意味着您可以非常快速地显示与实际标题非常接近的内容,但您可以选择在文件上异步循环,并在实际标题不同的情况下更新它们…即如果用户输入的标题是“做什么!他们可能会非常简短地看到“我做什么”,很快就会被“我做什么”取代!“是吗?”-并且没有索引文件损坏的风险。

非常信息丰富的问题标题!那么简单地使用每个文件的第一行作为标题如何?意味着性能略有下降,但很容易编写代码。您能解释一下如何只读取第一行吗?要读取我使用ReadToEnd()的全文,我应该使用ReadLine()吗?如果是,我如何使用它来检索第一行?谢谢!“就我个人而言,我可能会想让每个文本文件的第一行成为标题“…我如何才能只捕捉文本文件的第一行?@user1100421
StreamReader
file.ReadLines(path).first()