为什么我收到此错误?我正在使用正确的路径。
答案 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包含文件名。