C# Path CsvReader - 如何使用绝对路径

C# Path CsvReader - how to use absolute path

我正在使用 System.IO.StreamReader 传递字符串路径 (@"C:\Users\someuser\somefolder\my.csv")

        using (var reader = new StreamReader(filepath))
        {
            var csvReader = new CsvReader(reader);
            var entries = csvReader.GetRecords<SpreadsheetEntry>();
            return entries.ToList();
        }

这会引发以下异常:

System.IO.IOException

HResult=0x8007007B Message=文件名、目录名称或卷标语法不正确

'C:\Users\someuser\Source\Repos\StakeParser\StakeParser\bin\Debug\netcoreapp2.1\‪C:\Users\someuser\Desktop\testspreadsheet.csv' 来源=System.Private.CoreLib 堆栈跟踪: 在 System.IO.FileStream.ValidateFileHandle(SafeFileHandle 文件句柄) .....

我的问题是,我如何正确使用此功能以便稍后可以将完整路径作为参数传递到控制台中? , 目前它从工作路径开始而不是采用绝对路径...

C:\Users\someuser\Source\Repos\StakeParser\StakeParser\bin\Debug\netcoreapp2.1\‪C:\Users\someuser\Desktop\testspreadsheet.csv

仔细查看文件路径变量StreamReader(filepath)它是2个路径组合在一起:

C:\Users\someuser\Source\Repos\StakeParser\StakeParser\bin\Debug\netcoreapp2.1\

C:\Users\someuser\Desktop\testspreadsheet.csv

我猜你只想要它的第二部分。在代码显示之前的某处,您可能连接了当前工作目录和文件名,但该文件名已经是一个完整的路径。

.NET 有路径 class 这对于处理路径非常有用:https://docs.microsoft.com/en-us/dotnet/api/system.io.path

这里提供了答案。 Streamreader 将绝对路径添加到其 运行 at.

的工作路径

http://www.introprogramming.info/tag/streamreader-class/

有时 C# 不允许从 C:\Users... 文件夹中读取数据。

使用其他文件夹,例如 D:\SomeFolder。

它将解决问题。