目录名称无效

时间:2014-02-17 09:54:23

标签: c# windows-services directory

为什么我收到此错误?我正在使用正确的路径。

Directory name is invalid

5 个答案:

答案 0 :(得分:4)

问题:您正在提供File

的路径

解决方案:您需要提供Directory的路径,以根据您的搜索模式获取给定Directory中的所有文件。

来自MSDN:Directory.GetFiles()

  

返回与之匹配的文件名(包括其路径)   在指定目录中指定搜索模式。

试试这个:

string directoryName = Path.GetDirectoryName(e.FullPath);
foreach(String filename in Directory.GetFiles(directoryName,"*.eps"))
{   
    //your code here   
}

答案 1 :(得分:2)

您需要目录,而不是文件名。

目前,e.FullPath的值为"C:\\DigitalAssets\\LP_10698.eps"。它应该是"C:\\DigitalAssets"

string[] fileNames = Directory.GetFiles(string path)需要一个目录,你给它一个目录+ filename。

MSDN

  

返回与之匹配的文件名(包括其路径)   在指定目录中指定搜索模式

foreach(string filename in Directory.GetFiles(e.FullPath, "*.eps"))
{
    // For this to work, e.FullPath needs to be a directory, not a file.
}

您可以使用Path.GetDirectoryName()

foreach(string filename in Directory.GetFiles(Path.GetDirectoryName(e.FullPath), "*.eps"))
{
    // Path.GetDirectoryName gets the path as you need
}

你可以创建一个方法:

public string GetFilesInSameFolderAs(string filename)
{        
    return Directory.GetFiles(Path.GetDirectoryName(filename), Path.GetExtension(filename));
}

foreach(string filename in GetFilesInSameFolderAs(e.FullPath))
{
    // do something with files.
}

答案 2 :(得分:0)

Directory.GetFiles用于从特定目录中获取文件名。您试图从文件名中获取无效的文件,因为它会给您带来错误。为函数提供目录名而不是文件名。

你可以尝试

Directory.GetFiles(System.IO.Path.GetDirectoryName(e.FullPath),"*.eps")

答案 3 :(得分:0)

e.FullPath似乎是一个文件,而不是目录。如果要枚举* .eps文件,GetFiles的第一个参数应该是目录路径:@"C:\DigitalAssets"

答案 4 :(得分:0)

GetFiles的第一个参数应该只是“C:\ DigitalAssets” e.FullPath包含文件名。