¿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.
¿Desea iniciar una instancia de bloc de notas desde su programa y hacer que abra un archivo específico?
Despido
1
Nota: Cuando lo probé con .Net 2.0, Process.Startno expandí automáticamente "% windir%", aunque omitirlo como en la respuesta de viabhav o expandirlo explícitamente ( Environment.GetEnvironmentVariable("windir")) funcionó con éxito.
El segundo enfoque es probablemente una mejor práctica ya que esto hará que el shell de Windows abra su archivo con su editor asociado. Además, si el archivo especificado no tiene una asociación, usará el Open With...cuadro de diálogo de Windows.
Nota para los que están en los comentarios, gracias por sus comentarios. Mi respuesta rápida y sucia estaba un poco fuera de lugar, he actualizado la respuesta para reflejar la forma correcta.
Estoy de acuerdo en que esta es una forma de hacer esto, otra forma, 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 segundo parámetro. En realidad, según la documentación , su código no debería funcionar, ya que el único parámetro de Process.Startes el documento o el nombre del archivo de la aplicación, mientras que el suyo es el nombre de la aplicación combinado con el parámetro de la línea de comandos.
Vlad
@Albin: Gracias, totalmente pasado por alto ese: p @Jim: Creo que la pregunta era cómo lanzar un editor. @Vlad: Gracias, tienes razón.
Aren
11
El uso Process.Start(filename)es una inyección de comandos potencial, mediante el cual un atacante podría sustituir MyTextFile.txtpor MyMalicious.bato fdisk .... Mejor usar Process.Start("notepad.exe", filename).
Geoff Bennett
29
No está proporcionando mucha información, pero asumiendo que desea abrir cualquier archivo en su computadora con la aplicación que se especifica para el controlador predeterminado para ese tipo de archivo, puede usar algo como esto:
var fileToOpen ="SomeFilePathHere";var process =newProcess();
process.StartInfo=newProcessStartInfo(){UseShellExecute=true,FileName= fileToOpen};
process.Start();
process.WaitForExit();
El parámetro UseShellExecute le dice a Windows que use el programa predeterminado para el tipo de archivo que está abriendo.
WaitForSalir hará que su aplicación espere hasta que la aplicación que luanched se haya cerrado.
Por cierto,% pathVariables% no funciona con este método. Process.Start(@"%windir%\notepad.exe");arroja una Win32Exception: "No se puede encontrar el archivo" pero normalmente debería funcionar.
Aren
@Aren: que se puede resolver llamando a Environment.ExpandEnvironmentVariables ()
Process.Start
no expandí automáticamente "% windir%", aunque omitirlo como en la respuesta de viabhav o expandirlo explícitamente (Environment.GetEnvironmentVariable("windir")
) funcionó con éxito.Respuestas:
Necesitas
System.Diagnostics.Process.Start()
.El ejemplo más simple:
Enfoque más genérico:
El segundo enfoque es probablemente una mejor práctica ya que esto hará que el shell de Windows abra su archivo con su editor asociado. Además, si el archivo especificado no tiene una asociación, usará el
Open With...
cuadro de diálogo de Windows.Nota para los que están en los comentarios, gracias por sus comentarios. Mi respuesta rápida y sucia estaba un poco fuera de lugar, he actualizado la respuesta para reflejar la forma correcta.
fuente
Process.Start
es el documento o el nombre del archivo de la aplicación, mientras que el suyo es el nombre de la aplicación combinado con el parámetro de la línea de comandos.Process.Start(filename)
es una inyección de comandos potencial, mediante el cual un atacante podría sustituirMyTextFile.txt
porMyMalicious.bat
ofdisk ...
. Mejor usarProcess.Start("notepad.exe", filename)
.No está proporcionando mucha información, pero asumiendo que desea abrir cualquier archivo en su computadora con la aplicación que se especifica para el controlador predeterminado para ese tipo de archivo, puede usar algo como esto:
El parámetro UseShellExecute le dice a Windows que use el programa predeterminado para el tipo de archivo que está abriendo.
WaitForSalir hará que su aplicación espere hasta que la aplicación que luanched se haya cerrado.
fuente
if(File.Exists(fileToOpen))
para evitar encontrarse con una excepción.esto abrirá el archivo con el programa predeterminado de Windows (bloc de notas si no lo ha cambiado);
fuente
fuente
Puede usar
Process.Start
, llamandonotepad.exe
con el archivo como parámetro.fuente
Process.Start(@"%windir%\notepad.exe");
arroja una Win32Exception: "No se puede encontrar el archivo" pero normalmente debería funcionar.Utilice System.Diagnostics.Process para iniciar una instancia de Notepad.exe.
fuente