C#のメモ帳でファイルを開く


115

C#でファイルを開く方法は?textreaderやreadline()で読むという意味ではありません。つまり、メモ帳で独立したファイルとして開くことです。


プログラムからメモ帳のインスタンスを起動して、特定のファイルを開かせたいですか?
Dismissile

1
注:.Net 2.0で試したとき、Process.Start「%windir%」は自動的に拡張されませんでしたが、viabhavの回答のように省略したり、明示的に拡張したり(Environment.GetEnvironmentVariable("windir")すると正常に機能しました。
ブライアン、

メモ帳のクローンをアプリケーションに統合し、思い通りに機能するようにカスタマイズできます。C#でメモ帳のクローンを作成します。ここで見つけることができます:simplygoodcode.com/2012/04/notepad-clone-in-net-winforms.html
Luis Perez

回答:


190

あなたが必要System.Diagnostics.Process.Start()です。

最も単純な例:

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

より一般的なアプローチ:

Process.Start(fileName);

2番目の方法は、Windowsシェルが関連するエディターでファイルを開くようになるため、おそらくより良い方法です。さらに、指定されたファイルに関連付けがない場合はOpen With...、ウィンドウのダイアログが使用されます。

コメント欄にご記入いただき、ありがとうございます。私の素早い回答は少しずれていました。正しい方法を反映するように回答を更新しました。


1
もし私があなただったら、少し脱出するでしょう。
Albin Sunnanbo、

1
これはこれを行う1つの方法であり、ドキュメントを開いてプログラムを実行しない場合の別の方法は、次の行に沿って何かを使用することです:richTextBox1.LoadFile(Program.editInC、RichTextBoxStreamType.UnicodePlainText)実際の内容をファイルに。
ジム

1
2番目のパラメーターとしてファイル名を渡すことをお勧めします。実際には、ドキュメンテーションによると、あなたのコードはProcess.Startアプリケーションまたはファイル名であるのに対し、あなたのコードはアプリケーション名とコマンドラインパラメーターを組み合わせたものであるため、コードは機能しないはずです。
Vlad

@アルビン:ありがとう、その1つを完全に見落としました:p @ジム:エディターを起動する方法を尋ねる質問だったと思います。@ Vlad:ありがとう、あなたは正しいです。
Aren

11
を使用するProcess.Start(filename)と、コマンドインジェクションが行われる可能性があり、攻撃者はまたはの代わりMyTextFile.txtMyMalicious.bat使用できfdisk ...ます。使用する方が良いProcess.Start("notepad.exe", filename)
ジェフベネット

29

多くの情報を提供しているわけではありませんが、そのファイルタイプのデフォルトハンドラーに指定されているアプリケーションを使用して、コンピューター上の任意のファイルのみを開きたい場合は、次のようなものを使用できます。

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

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

UseShellExecuteパラメーターは、開いているファイルの種類に応じて既定のプログラムを使用するようにWindowsに指示します。

WaitForExitは、起動したアプリケーションが閉じられるまでアプリケーションを待機させます。


また、if(File.Exists(fileToOpen))例外が発生しないようにするには、a を使用することをお勧めします。
ウィッチョ

26

これにより、デフォルトのWindowsプログラム(変更していない場合はメモ帳)でファイルが開きます。

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


12

ファイルをパラメータとしてProcess.Start呼び出しnotepad.exeて、を使用できます。

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

2
ちなみに、%pathVariables%はこのメソッドでは機能しません。Process.Start(@"%windir%\notepad.exe");Win32Exception: "Cannot find file"をスローしますが、通常は機能します。
アレン

@Aren:Environment.ExpandEnvironmentVariablesを呼び出す解くことができる()
sɐunıɔןɐqɐp

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.