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

时间:2018-09-30 02:48:55

标签: c# csv path streamreader 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 fileHandle)   .....

我的问题是,如何使用此更正,以便以后可以在控制台中将全路径作为参数传递? ,此刻它是从工作路径开始的,而不是走绝对路线...

3 个答案:

答案 0 :(得分:0)

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具有Path类,它对于处理路径非常有用:https://docs.microsoft.com/en-us/dotnet/api/system.io.path

答案 1 :(得分:0)

此处提供了答案。 Streamreader将绝对路径添加到其运行所在的工作路径。

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

答案 2 :(得分:0)

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

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

它将解决问题。