2010-05-22 27 views
5

Quindi sto cercando di creare un percorso in C#. Uso Environment.Machinename e lo memorizzo come variabile serverName. Quindi creo un'altra variabile stringa e ho qualche altra estensione di percorso. Ecco il mio codice finora:Creazione di un percorso file in C#

string serverName = Environment.MachineName; 
string folderName = "\\AlarmLogger"; 

Non importa quello che faccio io non riesco ad ottenere un solo backslash prima AlarmLogger. Qualche idea su come posso specificare un percorso in C#?

Modifica: Mi chiedo se il mio codice non sembra voler incollare correttamente. Ad ogni modo quando lo incollo vedo solo una barra rovesciata ma il mio codice ne ha due. A causa della sequenza di caratteri di escape. Ma qualcosa come

string test = @"\\" + serverName + folderName 

non sembra voler lavorare per me.

+0

Quando si digita il codice, è necessario selezionarlo e utilizzare l'icona del codice (101010) per preservare la formattazione originale. –

+1

Sarebbe d'aiuto se dessi un esempio di come vuoi che il risultato finale sia simile. –

risposta

20

Utilizzare Path.Combine(serverName, folderName). Path.Combine è sempre una soluzione migliore rispetto a concedersi da soli.

+0

Darò uno scatto. Grazie. – Jason

+1

Dovrai rimuovere anche le barre da folderName: string folderName = "AlarmLogger"; – s1mm0t

1

Non è chiaro cosa si sta tentando di fare o cosa sta andando male.

Se si hanno problemi tra cui backslash nelle stringhe, hanno bisogno di essere sfuggito con una barra rovesciata aggiuntiva:

string twoBackslashes = "\\\\"; 

Oppure si può fare in questo modo:

string twoBackslashes = @"\\"; 

Se sei cercando di manipolare i percorsi, guarda la classe System.IO.Path. In particolare, Path.Combine può essere utile.

2

Non è possibile utilizzare Path.Combine per questo come suggerito. Il motivo è che ignora le variabili statiche se la prima voce è statica, ad es. Environment.MachineName (consultare i documenti MSDN per i dettagli). Se usi Path.Combine (servername, foldername) otterrai "\ AlarmLogger". Inoltre, analizza le doppie barre in singole barre.

Detto questo, si può fare qualcosa di simile le seguenti (tra gli altri modi):

string serverName = Environment.MachineName; 
string folderName = "\\\\AlarmLogger"; //this gives alarmlogger two leading slashes 
string test = @"\\" + serverName + folderName.Substring(1,folderName.Length-1); //this removes one of the two leading slashes 

Si potrebbe utilizzare un gran numero di modi per rimuovere la barra che porta oltre sottostringa.