C# Почему я получаю исключение NotSupported на моем пути к файлу

StackOverflow https://stackoverflow.com/questions/1452004

  •  12-09-2019
  •  | 
  •  

Вопрос

StreamReader fr = new StreamReader("D:\\test\\" + item);

Это то, что я хочу сделать.Item представляет собой строку с именем файла.Дырочная струна такая

"D:\\test\\01-Marriotts Island.mp3"

прежде чем он попытается сгенерировать StreamReader.что не так с дорогой?

Это было полезно?

Решение

StreamReader предназначен для чтения символьных данных.Вы должны использовать БинарныйReader вместо этого, если вы пытаетесь прочитать двоичные данные, например содержимое mp3-файла.

Обновлять:Как отметил Марк, вы также можете использовать Транслировать для чтения файла, и это может обеспечить более простой в использовании интерфейс для управления файлом, чем BinaryReader.Кроме того, я поддерживаю его рекомендацию использовать Путь.Объединить при создании пути к файлу, к которому вы хотите получить доступ.

Другие советы

Есть ли еще какое-нибудь сообщение, связанное с этим?Для информации, самый простой способ объединить пути — это Path.Combine:

using(StreamReader fr = new StreamReader(Path.Combine(@"D:\Test", item))) {
   // ...
}

(обратите внимание также на using чтобы убедиться, что он утилизирован)

или еще яснее (ИМО):

using(StreamReader fr = File.OpenText(Path.Combine(@"D:\Test", item))) {
    // ...
}

(конечно, как уже упоминалось в другом месте, StreamReader может быть неподходящим для mp3)

Консультации Документация MSDN для StreamReader, я не вижу NotSupportedException указан как исключение, которое будет генерировать этот API.Однако, еще одна аналогичная перегрузка конструктора перечисляет это:

NotSupportedException:PATH включает в себя неверный или недействующий синтаксис для имени файла, имени каталога или метки тома.

Поэтому я попробовал это сам с неверной меткой тома и действительно получил NotSupportedException:

StreamReader reader = new StreamReader("DD:\\file.txt");

// throws...
//
// Unhandled Exception: System.NotSupportedException: The given path's format is not supported.

Так что я предполагаю, что с вашим путем что-то не так.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top