Abra um arquivo com o Bloco de Notas em C #


115

Como abro um arquivo em c #? Não quero dizer lê-lo por textreader e readline (). Quero dizer, abri-lo como um arquivo independente no bloco de notas.


Você deseja iniciar uma instância do bloco de notas do seu programa e fazê-lo abrir um arquivo específico?
— Dismissibilidade em

1
Nota: Quando tentei com .Net 2.0, Process.Startnão expandiu automaticamente "% windir%", embora omiti-lo como na resposta de viabhav ou expandi-lo explicitamente ( Environment.GetEnvironmentVariable("windir")) funcionou com sucesso.
— Brian,

Você pode integrar um clone do bloco de notas em seu aplicativo e personalizá-lo para funcionar da maneira que você deseja. Eu escrevo um clone do bloco de notas em C #. Você pode encontrá-lo aqui: simplygoodcode.com/2012/04/notepad-clone-in-net-winforms.html
— Luis Perez

Respostas:


190

Você precisa System.Diagnostics.Process.Start().

O exemplo mais simples:

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

Abordagem mais genérica:

Process.Start(fileName);

A segunda abordagem é provavelmente a melhor prática, pois fará com que o shell do Windows abra seu arquivo com o editor associado. Além disso, se o arquivo especificado não tiver uma associação, ele usará a Open With...caixa de diálogo do Windows.

Nota para aqueles nos comentários, obrigado por sua contribuição. Minha resposta rápida e suja estava um pouco errada, eu atualizei a resposta para refletir a maneira correta.


1
Eu escaparia um pouco se fosse você.
— Albin Sunnanbo,

1
Concordo que esta é uma maneira de fazer isso, outra maneira, se você quiser abrir o documento, mas não executar o programa, seria usar algo parecido com: richTextBox1.LoadFile (Program.editInC, RichTextBoxStreamType.UnicodePlainText) para carregar o conteúdo real em um arquivo.
— Jim

1
É melhor passar o nome do arquivo como um segundo parâmetro. Na verdade, de acordo com a documentação , seu código não deve funcionar, pois o único parâmetro de Process.Starté o nome do arquivo do documento ou do aplicativo, enquanto o seu é o nome do aplicativo combinado com o parâmetro da linha de comando.
— Vlad,

@Albin: Obrigado, esqueci totalmente aquele: p @Jim: Acho que a questão era saber como lançar um editor. @Vlad: Obrigado, você está correto.
— Aren

11
Usando Process.Start(filename)é uma injecção de comando potencial, pelo que um intruso poderia substituir MyTextFile.txtpara MyMalicious.batou fdisk .... Melhor usar Process.Start("notepad.exe", filename).
— Geoff Bennett

29

Você não está fornecendo muitas informações, mas supondo que deseja abrir qualquer arquivo em seu computador com o aplicativo especificado para o manipulador padrão para esse tipo de arquivo, você pode usar algo assim:

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

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

O parâmetro UseShellExecute informa ao Windows para usar o programa padrão para o tipo de arquivo que você está abrindo.

O WaitForExit fará com que o seu aplicativo espere até que o aplicativo que você executou seja fechado.


E, além disso, seria bom usar um if(File.Exists(fileToOpen))para evitar encontrar uma exceção.
— Wiccio

26

isso abrirá o arquivo com o programa padrão do Windows (bloco de notas, se você não o alterou);

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

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

12

Você pode usar Process.Start, chamando notepad.execom o arquivo como parâmetro.

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

2
A propósito,% pathVariables% não funciona com este método. Process.Start(@"%windir%\notepad.exe");lança uma Win32Exception: "Não é possível localizar o arquivo", mas normalmente deve funcionar.
— Aren

@Aren: que pode ser resolvido chamando Environment.ExpandEnvironmentVariables ()
— sɐunıɔ ןɐ qɐp

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.