C # Path CsvReader - как использовать абсолютный путь - PullRequest
0 голосов
/ 30 сентября 2018

Я использую 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 Сообщение = Синтаксис имени файла, каталога имя или метки тома неверный :

'C:\ Users \ someuser \ Source \ Repos \ StakeParser \ StakeParser \ bin \ Debug \ netcoreapp2.1 \ C: \ Users \ someuser \ Desktop \ testspreadsheet.csv ' Source = System.Private.CoreLib StackTrace: в системе.IO.FileStream.ValidateFileHandle (SafeFileHandle fileHandle) .....

Мой вопрос состоит в том, как использовать это исправление, чтобы впоследствии я мог передать полный путь в качестве аргумента в консоли?в данный момент он начинается с рабочего пути, а не по пути абсолюта ...

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Ответ предоставляется здесь.Streamreader добавляет абсолютный путь к рабочему пути, в котором он работает.

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

0 голосов
/ 30 сентября 2018

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

Внимательно посмотрите на переменную filepath StreamReader(filepath) это 2 пути, объединенные вместе:

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

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

Я предполагаю, что вы просто хотите 2-ю часть.Где-то до показанного кода вы, вероятно, объединили текущий рабочий каталог и имя файла, но это имя файла уже было полным путем.

.NET имеет класс Path, который очень полезен для обработки путей: https://docs.microsoft.com/en-us/dotnet/api/system.io.path

...