【发布时间】:2011-10-18 20:12:02
【问题描述】:
我们有一个 C# 应用程序,它将文件写入一个可配置的位置。文件集(和相对路径)在运行时确定。
我们要确保它不能在配置的位置之外写入文件。
例如,配置的位置可能是c:\Stuff\Export,程序在C:\Stuff\Important下写任何东西都会出错
真的,我认为我们可以通过两种方式实现这一目标: 1)断言没有任何相对路径(要写入的文件)指定“父目录”(通常是“../”) - System.Path 没有指定“父目录”路径组件(就像它用于路径分隔一样即 System.Path.PathSeparator)。我觉得在字符串中检查“../”有点笨拙。
2) 断言生成的所有最终绝对路径(通过将输出位置与文件相对路径相结合)相对于输出位置,即在输出位置下方。不过,我不确定该怎么做。
Example usage:
Output directory: c:\Stuff\Export
Output path 1: "foo\bar\important.xls"
Output path 2: "foo\boo\something.csv"
Output path 3: "../../io.sys"
Expected final files
1. c:\Stuff\Export\foo\bar\important.xls
2. c:\Stuff\Export\foo\boo\something.csv
3. Should throw exception
【问题讨论】:
-
请不要在标题前加上“C#”。为此,我们在Stack Overflow 上使用标签。
-
你能举个例子你的目录写文件和文件输入吗?
-
这可能会有所帮助 - stackoverflow.com/questions/5617320/…