2014-07-21 3 views
19

Ich schreibe eine einfache Konsolenanwendung, die XML aus einer Testdatei liest und es zu einem Objekt deserialisiert.Was verursacht NotSupportedException ("Das Format des angegebenen Pfads wird nicht unterstützt"), während ein gültiger Pfad verwendet wird?

var s = File.ReadAllBytes("‪G:\\Temp\\Publishing\\2.txt"); 
Stream _response = File.OpenRead("‪G:\\Temp\\Publishing\\2.txt"); 
var s = File.ReadAllBytes(@"‪g:\temp\publishing\2.txt"); 
var s = File.ReadAllBytes(@"‪G:\Temp\Publishing\2.txt"); 

Ich habe alle oben versucht, die Datei zu lesen und es wirft immer NotSupportedException mit einer Nachricht

Das Format der angegebenen Pfad wird nicht unterstützt.

Was ist der Formatfehler im obigen Pfad?

+0

Außerdem, gibt es einen Grund, warum Sie 'ReadAllBytes' verwenden, anstatt einen' StreamReader' für den Pfad zu erhalten und 'ReadToEnd()' aufzurufen? Oder noch besser, den Pfad direkt in den XML-Parsing-Code laden, den Sie haben (zum Beispiel 'XElement.Load (String)'? –

+0

@MatthewHaugen: Die Frage sagt, dass sie alle den Fehler werfen. Ich würde widersprechen und sagen: "Warum? Würden Sie einen StreamReader verwenden, wenn ReadAllBytes das tut, was Sie wirklich wollen? " –

+0

@BillyONeal touché. Ich lese zu schnell dafür. Entschuldigung. Ich lösche meinen Kommentar. Was Ihren zweiten Punkt betrifft, stimme ich völlig zu, aber ich dachte es könnte Es scheint ein seltsames Problem zu sein, also wird es vielleicht eine seltsame Lösung haben, ganz zu schweigen davon, wenn das OP von keiner der beiden Optionen wusste, würde ich sie lieber auf den Plan rufen als ausgiebig nach Fehlern suchen etwas, das ist nicht der beste Weg, es zu tun. –

Antwort

29

Nach der Referenzquelle: http://referencesource.microsoft.com/#mscorlib/system/io/filestream.cs#732

NotSupportedException wird ausgelöst, wenn der Index der : in Ihrem Weg an der dritten Position oder später ist. (Man würde erwarten, dass : das zweite Zeichen ist.) Sind Sie sicher, dass in Ihrer Quelle keine Null-Breite-Kombinationszeichen oder andere ähnliche Unicode-Shenanigans vorkommen?

+2

Ich habe gerade den Index überprüft mit 'string _path = @" G: \ Temp \ Veröffentlichung \ 2.txt "; int i = path.IndexOf (':');' und überraschend Index von ':' ist 2. Aber wie/warum? –

+12

Ich hatte den Pfad von 'Windows Explorer' kopiert und es verursachte etwas, das ich immer noch verstehe, ein unbekanntes/verstecktes Zeichen in der Pfadzeichenfolge hinzuzufügen und': 'an die 3. Position zu schieben. Ich habe den kompletten Pfad neu eingegeben und es funktioniert. –

+3

@LibinTK Ich habe Ihr Beispiel in Visual Studio eingefügt, es als Textdatei gespeichert und in einem Texteditor geöffnet. Es gibt einen 'U + 202A LEFT-TO-RIGHT EMBEDDING'-Zeichen zwischen dem" und dem G. –

Verwandte Themen