在C#中使用/ Spaces验证文件路径

时间:2009-12-04 16:40:12

标签: c# c#-3.0 winforms

我是C#的n00b,我很难找到答案,所以如果已经在某个地方得到回答,请随意嘲笑我(如果你也分享解决方案)。 :)

我正在将XML文件读入GUI表单,其中某些元素是输入TextBox对象的文件的路径。我正在循环遍历表单上的控件,并且对于每个TextBox中的每个文件路径(在这个表单中lol就像它们中的20个),我想使用File.Exists()来确保它是一个有效的文件。

这个问题是文件路径可能包含空格,并且可能有效;但是File.Exists()告诉我它完全基于空格是无效的。显然我不能对它们进行硬编码并执行类似

的操作

if (File.Exists(@"c:\Path To Stuff"))

我尝试用“和

一起围绕路径

if (File.Exists("\"" + contentsOfTextBox + "\""))

但这并没有什么区别。有办法做到这一点吗?我可以以某种方式逃离空间吗?

感谢您的时间。 :)

9 个答案:

答案 0 :(得分:4)

File.Exists可以很好地处理空格。还有别的东西给你一个问题,我打赌。

确保您的XML阅读器无法读取文件名(XML的部分内容不允许空格,如果遇到空格,某些读者会抛出异常)。

答案 1 :(得分:4)

  
    

@“c:\ Path To Stuff”

  

以上可能是目录 文件

因此,您可能希望使用Directory.Exists!

  
    

@“c:\ Path To Stuff \ file.txt”

  

如果你在路径的末尾有一个文件,那么你将使用File.Exists!

答案 2 :(得分:2)

正如答案所说,File.Exists使用空格,但是如果要检查是否存在Directory,则应该使用Directory.Exists

答案 3 :(得分:1)

File.Exists表示无效时,您得到的确切错误是什么?

怀疑您正在传递路径到目录而不是文件,这将返回false。如果是,要检查目录的存在,请使用Directory.Exists

答案 4 :(得分:1)

回应Ron Warholic:确保进程拥有目标文件夹的权限。我刚遇到同样的“bug”,结果证明是权限问题。

答案 5 :(得分:0)

您是否记得将\替换为\\?

答案 6 :(得分:0)

您需要使用youtStringValue.Trim()来删除前导/尾随空格,并使用Replace来删除您不想要的字符串中的空格。

另外,请使用System.IO.Path.Combine来组合这些字符串。

答案 7 :(得分:0)

嗨,如果您可以将路径名称转换为字符串数组然后一个接一个地删除空格

一旦完成,只需将write()写入您拥有文件的屏幕,如果是xml,那么您的xmlmapper就足够了

file.exists()只应在某些情况下使用,如果您知道它确实存在但不能在有空格字符或任何其他可能的用户输入时使用

答案 8 :(得分:0)

您可以在字符串变量上使用@:

string aPath = "c:\Path To Stuff\text.txt";
File.Exists(@aPath);

这应该可以解决任何转义字符问题,因为我认为这看起来不像是空格问题。