2012-01-17 76 views
3

我已经看到关于这个问题的数十个问题和答案,但我仍然无法解决我的问题。C#中的路径空间

我用我的代码的外部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:\用户\用户\文档\测试视频\ 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" 

作品完全罚款。

UPDATE: 该方法使用这样的字符串:

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."); 
} 
+0

尝试正斜杠。 '/'而不是'\\' – leppie 2012-01-17 08:51:54

+0

尝试正斜杠? c:/ dir/file – Dve 2012-01-17 08:52:11

+2

“@”“'字符串文字符号是编译器的东西。无论你使用它还是转义'\'的每个实例,结果字符串都是相同的。无论如何,这听起来像是你正在使用的库中的一个错误。 – Joey 2012-01-17 08:52:53

回答

4

这可能是converter.ConvertToFLV不会正确处理其中有空格的路径名称。你可以尝试给它8.3 pathname不具有空间

+0

它看起来File.Exists方法不会'吨与所有这些字符串工作。当我删除检查一切正常(但我认为,不检查文件是否存在或不在应用程序级别上是不是一个正确的方法来克服这个问题) – Matt 2012-01-17 09:49:29

+0

@Matt:你应该发布这个答案,使其对其他人有用谁可能会在未来遇到同样的问题。 – ChrisWue 2012-01-17 21:57:09

0

好吧,来包装主题...

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