I'm using System.IO.StreamReader passing a string path (@"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 消息=文件名、目录名或卷标语法不正确:
'C:\Users\someuser\Source\Repos\StakeParser\StakeParser\bin\Debugetcoreapp2.1\C:\Users\someuser\Desktop\testspreadsheet.csv'Source=System.Private.CoreLib 堆栈跟踪: at System.IO.FileStream.ValidateFileHandle(SafeFileHandle fileHandle( .....
我的问题是,我如何使用这种相关性,以便以后可以在控制台中将完整路径作为参数传递? ,目前它从工作路径开始,而不是采取绝对路径......
这里提供了答案。流读取器将绝对路径添加到其运行的工作路径中。
http://www.introprogramming.info/tag/streamreader-class/
C:UserssomeuserSourceReposStakeParserStakeParserbinDebugnetcoreapp2.1C:UserssomeuserDesktoptestspreadsheet.csv
仔细查看 filepath 变量StreamReader(filepath)
它是 2 个路径组合在一起:
C:UserssomeuserSourceReposStakeParserStakeParserbinDebugnetcoreapp2.1
C:UserssomeuserDesktoptestspreadsheet.csv
我猜你只想要它的第二部分。在显示代码之前的某个地方,您可能连接了当前工作目录和文件名,但该文件名已经是整个路径。
.NET 具有 Path 类,对于处理路径非常有用:https://learn.microsoft.com/en-us/dotnet/api/system.io.path
有时 C# 不允许从 C:\Users...文件夹。
使用其他文件夹,如 D:\SomeFolder。
它将解决问题。