2010-10-29 24 views
86

¿Cómo abro un archivo en C#? No me refiero a leerlo por textreader y readline(). Me refiero a abrirlo como un archivo independiente en el bloc de notas.Abra un archivo con el Bloc de notas en C#

+0

¿Desea iniciar una instancia de bloc de notas de su programa y hacer que abra un archivo específico? – Dismissile

+0

sí esto es lo que quiero – Mohamed

+1

Nota: En cuando lo probé con .Net 2.0, 'Process.Start' no se expandió automáticamente"% windir% ", aunque lo omití como en [respuesta de viabhav] (http: // stackoverflow .com/questions/4055266/open-a-file-with-notepad-in-c/4055295 # 4055295) o expandirlo explícitamente ('Environment.GetEnvironmentVariable (" windir ")') funcionó correctamente. – Brian

Respuesta

134

Necesita System.Diagnostics.Process.Start().

El ejemplo más simple:

Process.Start("notepad.exe", fileName); 

enfoque más genérico:

Process.Start(fileName); 

El segundo enfoque es probablemente una mejor práctica ya que esto hará que el shell de Windows para abrir el archivo con el que está asociado editor . Además, si el archivo especificado no tiene una asociación, usará el cuadro de diálogo Open With... de Windows.

Nota para aquellos en los comentarios, gracias por su aporte. Mi rápida y sucia respuesta no fue clara, la actualicé para reflejar la forma correcta.

+1

Me gustaría escapar un poco si fuera tú. –

+1

Acepto que esta es una forma de hacerlo, de otra manera si quisiera abrir el documento pero no ejecutar el programa sería usar algo como: richTextBox1.LoadFile (Program.editInC, RichTextBoxStreamType.UnicodePlainText) para cargar el contenido real en un archivo. – Jim

+1

Es mejor pasar el nombre del archivo como un segundo parámetro. De hecho, según la [documentación] (http://msdn.microsoft.com/en-us/library/53ezey2s.aspx), su código no debería funcionar, ya que el parámetro único de 'Process.Start' es el nombre del documento o la aplicación, mientras que el suyo es el nombre de la aplicación combinado con el parámetro de línea de comando. – Vlad

24

esto abrirá el archivo con el programa predeterminado de Windows (notepad si no lo ha cambiado);

Process.Start(@"c:\myfile.txt") 
+1

Me gustaría escapar un poco si fuera tú. –

+0

tienes razón, arreglado. –

11

Puede utilizar Process.Start, llamando notepad.exe con el archivo como parámetro.

Process.Start(@"notepad.exe", pathToFile); 
+0

Las líneas nuevas no son muy útiles en Process.Start ... –

+0

@Albin Sunnanbo - gracias ... buena captura :) – Oded

+2

Por cierto,% pathVariables% no funciona con este método. 'Process.Start (@"% windir% \ notepad.exe ");' arroja una excepción Win32Exception: "No se puede encontrar el archivo", pero normalmente debería funcionar. – Aren

14
System.Diagnostics.Process.Start("notepad.exe", "text.txt"); 
21

no va a proporcionar una gran cantidad de información, pero suponiendo que desea abrir cualquier archivo en su computadora con la aplicación que se especifica para el controlador predeterminado para ese tipo de archivo, se puede usar algo como esto:

var fileToOpen = "SomeFilePathHere"; 
var process = new Process(); 
process.StartInfo = new ProcessStartInfo() 
{ 
    UseShellExecute = true, 
    FileName = fileToOpen 
}; 

process.Start(); 
process.WaitForExit(); 

El parámetro UseShellExecute indica a Windows que use el programa predeterminado para el tipo de archivo que está abriendo.

WaitForExit provocará que su aplicación espere hasta que se cierre la aplicación que colocó.

+0

Excelente y muy útil código para mí cuando intenté abrir un archivo de nota. – Unnikrishnan

+0

Hice clic equivocadamente en "no útil". Pero, de hecho, es muy, muy útil. – Unnikrishnan

Cuestiones relacionadas