路径中的C#空格

时间:2012-01-17 08:49:02

标签: c# path

我已经看过几十个关于这个问题的问题和答案,但我仍然无法解决我的问题。

我在我的代码中使用外部ffmpeg转换器,我将文件路径作为参数传递:

OutputPackage oo = converter.ConvertToFLV(@"C:\Users\user\Documents\test Video\video.wmv");

当“测试视频”文件夹名称中没有空格时,它可以正常工作。但是当它像上面那样我得到一个C:\Users\user\Documents\test不是有效路径的错误。

用引号括起来:

@"""C:\Users\user\Documents\test Video\video.wmv""" 

的结果

  

视频文件“C:\ Users \ user \ Documents \ test Video \ video.wmv”不存在。

我也试过没有“@”:

"\"C:\\Users\\user\\Documents\\test Video\\video.wmv\""

但结果是一样的。

Path.Combine("C:\\Users\\user\\Documents\\test Video\\video.wmv")
"\""+Path.Combine("C:\\Users\\user\\Documents\\test Video\\video.wmv")+"\""

也行不通。 同时从Windows控制台运行该过程,如

ffmpeg.exe "C:\Users\user\Documents\test Video\video.wmv"

完全正常。

更新: 该方法使用如下字符串:

public OutputPackage ConvertToFLV(string inputPath)
{
    VideoFile vf = null;
    try
    {
        //string path = string.Format("{0}", inputPath);
        vf = new VideoFile(inputPath);
    }
    catch (Exception ex)
    {
        throw ex;
    }

    OutputPackage oo = ConvertToFLV(vf);
    return oo;
}

在视频文件类中,抛出异常:

if (!File.Exists(_Path))
{
    throw new Exception("The video file " + _Path + " does not exist.");
}

2 个答案:

答案 0 :(得分:4)

可能是converter.ConvertToFLV无法正确处理包含空格的路径名。您可以尝试为其提供没有空格的8.3 pathname

答案 1 :(得分:0)

好的,包好主题......

虽然像ffmpeg这样的外部任务需要将包含空格的路径放在qoutes“path”中(因为Windows控制台将空格视为参数之间的分隔符),但C#中使用的方法File.Exists()不接受引号在路径中,并且适用于路径中的空格。