2010-05-22 14 views
5

Por lo tanto, intento crear una ruta en C#. Utilizo Environment.Machinename y lo almaceno como serverName variable. Luego creo otra variable de cadena y tengo alguna otra extensión de ruta allí. Aquí está mi código hasta ahora:Creando una ruta de archivo en C#

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

No importa lo que hago me parece que no puede obtener sólo una barra invertida antes de la AlarmLogger. ¿Alguna idea de cómo puedo especificar un camino en C#?

Editar: Me pregunto si mi código no parece querer pegar correctamente. De todos modos, cuando lo pego solo veo una barra invertida, pero mi código tiene dos. Debido a la secuencia de caracteres de escape. Pero algo como

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

parece que no quiere funcionar para mí.

+0

Al ingresar el código, debe seleccionarlo y usar el ícono de código (101010) para conservar el formato original. –

+1

Ayudaría si diera un ejemplo de cómo quiere que sea el resultado final. –

Respuesta

20

Use Path.Combine(serverName, folderName). Path.Combine es siempre una mejor solución que concatenarlo usted mismo.

+0

Voy a dar una oportunidad. Gracias. – Jason

+1

También querrá eliminar las barras de folderName: string folderName = "AlarmLogger"; – s1mm0t

1

No está claro lo que está tratando de hacer o lo que está pasando mal.

Si usted está teniendo problemas incluyendo barras invertidas en sus cadenas, tienen que ser escapado con una barra inversa extra:

string twoBackslashes = "\\\\"; 

O puede hacerlo de esta manera:

string twoBackslashes = @"\\"; 

Si está tratando de manipular rutas, mira la clase System.IO.Path. En particular, Path.Combine puede ser útil.

2

No se puede usar Path.Combine para esto como se sugiere. La razón es que ignora las variables estáticas si la primera entrada es estática, p. Environment.MachineName (consulte los documentos de MSDN para obtener más información). Si usa Path.Combine (servername, foldername) obtendrá "\ AlarmLogger". Además, analiza barras dobles para barras individuales.

Dicho esto, se puede hacer algo como los siguientes (entre otras cosas):

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 

Se puede usar un montón de maneras de eliminar la barra inicial, además de subcadena.