Path.Combine
utilizza i valori di Path.DirectorySeperatorChar
e Path.VolumeSeparatorChar
, e questi sono determinati dalle librerie di classi in runtime - quindi se si scrive il codice usando solo Path.Combine
chiamate, Environment.SpecialFolder
valori, e così via, è in grado di funzionare in tutto il mondo, dal momento che Mono (e presumibilmente qualsiasi runtime .NET) implementa il modo nativo di ottenere e costruire quei percorsi per qualsiasi piattaforma su cui gira. (Il tuo secondo esempio, per esempio, torna /server/mydir
per me, ma il primo esempio dà c:\/windows
)
Se si desidera un percorso UNIX specifici hard-coded in tutti i casi, Path.Combine
non sta comprando qualsiasi cosa: fa quello Console.WriteLine ("/server/mydir");
vuoi nel PO.
Come diceva Hans, diversi filesystem hanno regole diverse per i caratteri consentiti, lunghezze di percorso e così via, quindi la pratica migliore, come con qualsiasi programmazione multipiattaforma, è limitarsi a utilizzare l'intersezione delle caratteristiche consentite tra i filesystem che hai scelto come target. Guarda anche i problemi di sensibilità alla cassa.
fonte
2010-06-01 09:07:45
Grazie per quello, ma non riesco a trovare alcun metodo in nessuna di queste classi che sembra essere l'equivoco di .Combine()? –
Non ho trovato utile questo metodo ... Richiede la formattazione URI. UriFormatException: URI non valido: il formato dell'URI non può essere determinato: modello/1024x768 / –