第二个路径片段不能是驱动器或UNC名称

时间:2017-07-08 14:34:51

标签: c# bitmap path environment-variables image-file

如何通过主文件夹中的环境路径文件夹读取文件夹中的所有图像文件:

   string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "mainFolder"); 

例如,如果一个文件路径的内部文件夹是:

  Bitmap bmp = new Bitmap(path + "/folder/pic1.bmp");

但我想阅读mainFolder/folder的所有文件:

pic1.bmp
pic2.bmp
pic3.bmp
pic5.bmp

不确定如何正确地做到这一点:

            foreach (string imageFileName in Directory.GetFiles(path, "/folder/*.bmp"))
            {
                using (Bitmap bmp = new Bitmap(imageFileName))
                {
                  // process 
                }
            }

我这样做:Second path fragment must not be a drive or UNC name

这样:

foreach (string imgFileName in Directory.GetFiles(path + "/folder/*.bmp"))

我得到了:Illegal characters in path.

3 个答案:

答案 0 :(得分:1)

此代码失败,因为您必须提供文件名模式作为第二个参数:

foreach (string imgFileName in Directory.GetFiles(path, "/folder/*.jpg"))

第二个失败是因为' *'是一个特殊的象征,UNC的道路不接受它。

foreach (string imgFileName in Directory.GetFiles(path + "/folder/*.jpg"))

因此,您可以尝试执行以下操作:

foreach (string imgFileName in Directory.GetFiles(path + "/folder/","*.jpg")) 

MSDN Directory.GetFiles

答案 1 :(得分:0)

Directory.GetFiles()在其路径名中不接受星号。您可以做的是将文件扩展名提供为searchpattern:

foreach(string filename in Directory.GetFiles(Path.Combine(path, "folder"), "*.jpg"))
    //Do your stuff here

Further reading

答案 2 :(得分:0)

GetFiles将满足您的需求。您可以编写一个返回找到的文件的String []的新方法。如果需要,这将允许您在其他地方使用它。

public String[] GetFilesFromFolder(String folder, String[] filters, bool recursiveSearch)
 {
    List<String> foundFiles= new List<String>();
    var searchingOption = recursiveSearch ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
    foreach (var filter in filters)
    {
       foundFiles.AddRange(Directory.GetFiles(folder, String.Format("*.{0}", filter), searchOption));
    }
    return foundFiles.ToArray();
 }

然后使用它,只需执行以下操作:

String folder= "PATH TO FOLDER";
var filters = new String[] { "bmp", "jpg", "jpeg", "png" };
var files = GetFilesFromFolder(folder, filters, false);

这也让你可以控制搜索你喜欢的任何文件类型,所以不仅仅是BMP,还有JPG,PNG或其他任何文件(Doc,Xls等)