Rem*_*Rem 24 c# linux .net-core
如何以System.IO跨平台的方式处理类中的文件名,使其在Windows和Linux上运行?
例如,我编写的这段代码在Windows上完美运行,但它不会在Ubuntu Linux上创建文件:
var tempFilename = $@"..\Data\uploads\{filename}";
using (FileStream fs = System.IO.File.Create(tempFilename))
{
file.CopyTo(fs);
fs.Flush();
}
Run Code Online (Sandbox Code Playgroud)
one*_*fee 34
您也可以使用Path.DirectorySeparatorChar,如下所示:
Console.WriteLine("..{0}Data{0}uploads{0}{{filename}}", Path.DirectorySeparatorChar);
Run Code Online (Sandbox Code Playgroud)
参考:MSDN
小智 32
Windows使用反斜杠.Linux使用Slash.Path.Combine设置了正确的符号:
Path.Combine Method - MSDN
很多好的答案。我只想补充一点,可以避免使用 Path.Combine 指定目录分隔符
文件相对位于“.\..\toto\app.config”的示例:
Path.Combine("..", "toto", "app.config");
Run Code Online (Sandbox Code Playgroud)
不幸的是,Path.Combine 没有将相对路径解析为 .Net Core 中的绝对路径。Path.GetFullPath 在这里:
Path.GetFullPath(Path.Combine("..", "toto", "app.config"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21577 次 |
| 最近记录: |