C#如何保存文件名中包含“/”的文件

4

文件名包含例如 Legend/Dery//Times

File.WriteAllBytes("/Pictures" + FileName, buffer);

我无法保存文件,因为“/”被视为路径,但我也无法删除“/”,因为我需要它进行进一步处理。有没有办法保存这样的文件?


1
文件名不能包含斜杠字符。这是文件系统的限制。 - Andrey Korneyev
你能否使用其他字符来进行进一步的处理,而不是使用“/”?有一些关于不同操作系统下非法文件名的讨论(https://dev59.com/snI-5IYBdhLWcg3wMFS0)。 - Turbot
你能解释一下你想做什么吗?为什么不能使用另一个符号?为什么需要抛出带有某些分隔标记的字符串? - Dennis Christian
我会替换非法字符。我不想浪费不必要的计算能力,但在我看来这是唯一的方法。 - Paule Paul
3个回答

5

你没有那么好的运气。斜线不能作为文件名的一部分。

你需要以某种方式进行转义(即更改名称但提供一种改回来的方法),但实际上并没有一种传统的方法可以做到这一点。

我见过把%用于此目的,使用%%表示单个%,并使用类似于%f代表正斜杠,%b代表反斜杠等的方法。


真的太糟糕了 :/ 感谢您的快速回复。我会替换掉非法字符。 :) 我不想浪费不必要的计算能力,但我认为这是唯一的方法。 - Paule Paul

1

0

我建议在保存文件和尝试访问文件时,不要使用转义字符,而是对输入进行规范化处理:

//replace all illegal characters with regex (with a dash):
new Regex(@"[<>:""/\\|?*]").Replace("Inpu|t","-")

//Or just replace all non alpha numeric characters (with a dash): 
new Regex(@"[^a-zA-Z0-9\-]").Replace("Inpu|t","-")

这样做可以让你始终拥有干净的文件和文件夹名称,而不必担心非法名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接