¿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.
Necesitas 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 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.
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 sustituir MyTextFile.txt
por MyMalicious.bat
o fdisk ...
. Mejor usar Process.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:
var fileToOpen = "SomeFilePathHere";
var process = new Process();
process.StartInfo = new ProcessStartInfo()
{
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.
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);
Process.Start(@"c:\myfile.txt")
System.Diagnostics.Process.Start( "notepad.exe", "text.txt");
Puede usar Process.Start
, llamando notepad.exe
con el archivo como parámetro.
Process.Start(@"notepad.exe", pathToFile);
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.
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.