Nir*_*ani 5 c# string filepath command-line-arguments
这是很平常的事情,但是我对此感到非常困惑。
在c#中将文件路径作为命令行参数。
如果我输入“ F:\\”,那么这很完美。
但是当我输入“ F:\”时,它的输出就像F:“。
我知道这是因为反斜杠转义字符。
但是我的问题是,在逻辑上用户输入是正确的,如何在不修改用户输入的情况下解决此问题。
在这种情况下是否可以不修改用户输入就获得正确的路径?
我也知道有@字符可以使用。
但是正如我所说的,这是命令行参数,因此字符串已经在变量中。
我也阅读了一些博客,但仍然无法解决我的问题。
编辑:实际上,我的程序是列出目录内的所有文件,因此我首先检查Directory.Exists(命令行参数),然后如果目录存在则获取所有文件的列表。
好的,在这种情况下,当用户按照上面的逻辑给出用户名作为命令行参数时,该驱动器就存在了,但是由于转义字符,它返回了false。
只需考虑如下打印命令行参数即可。
class Program
{
static void Main(string[] args)
{
Console.WriteLine("{0}", args[0]);
Console.Read();
}
}
Run Code Online (Sandbox Code Playgroud)
我对C#的了解很少,谢谢您的帮助。
我不确定你为什么在这里遇到问题。在 M$ Windows 中,可以使用或不使用反斜杠来指定目录,因此所有这些都是正确的:c:andc:\和c:\mediaand c:\media\。Directory.Exists(path)这对于和其他函数(如 )是相同的Directory.GetFiles(path)。
下面是一个非常简单的应用程序,用于列出目录文件,在我的环境中,无论我是否在末尾添加斜杠,它都可以工作。所以c:\media\给了我所有的媒体文件。
class Program
{
static void Main(string[] args)
{
string path = args[0];
Console.WriteLine("trying path: " + path);
if (Directory.Exists(path))
Directory.GetFiles(path).ToList().ForEach(s => Console.WriteLine(s));
else
Console.WriteLine("path not found");
}
}
Run Code Online (Sandbox Code Playgroud)
需要注意的一点是,在 Visual Studio 中,当使用Quick Watch等调试器时,它会显示带有反斜杠的转义字符。因此,如果用户输入c:\media\字符串将被存储为,c:\media\但是当您快速观察VS 中的路径时,您会看到c:\\media\\;使用文本可视化功能更深入地查看,您将看到路径正确显示为c:\media\。
| 归档时间: |
|
| 查看次数: |
27402 次 |
| 最近记录: |