C #에서 메모장으로 파일 열기


116

C #에서 파일을 여는 방법은 무엇입니까? 나는 그것을 textreader와 readline ()으로 읽는 것을 의미하지 않는다. 메모장에서 독립 파일로 여는 것입니다.


프로그램에서 메모장 인스턴스를 시작하고 특정 파일을 열길 원하십니까?
Dismissile

1
참고 : .Net 2.0으로 시도했을 때 Process.Start"% windir %"를 자동으로 확장하지 않았지만 viabhav의 답변 에서처럼 생략 하거나 명시 적으로 확장 ( Environment.GetEnvironmentVariable("windir"))하면 성공적으로 작동했습니다.
Brian

메모장 복제본을 애플리케이션에 통합하고 원하는 방식으로 작동하도록 사용자 정의 할 수 있습니다. 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);

두 번째 방법은 Windows Shell이 ​​관련 편집기를 사용하여 파일을 열게하므로 더 나은 방법 일 것입니다. 또한 지정된 파일에 연결이 없으면 Open With...창 에서 대화 상자를 사용합니다 .

의견에 적어 주신 의견에 감사드립니다. 내 빠른 n '더러운 대답이 약간 벗어 났고 올바른 방법을 반영하도록 대답을 업데이트했습니다.


1
내가 당신이라면 탈출을 할 것입니다.
Albin Sunnanbo

1
이 작업을 수행하는 한 가지 방법이라는 데 동의합니다. 문서를 열고 싶지만 프로그램을 실행하지 않는 경우 다른 방법은 다음 줄을 따라 무언가를 사용하는 것입니다. 실제 내용을 파일로.
Jim

1
파일 이름을 두 번째 매개 변수로 전달하는 것이 좋습니다. 실제로 문서 에 따르면 의 단일 매개 변수 Process.Start가 문서 또는 애플리케이션 파일 이름 인 반면 yours는 명령 줄 매개 변수와 결합 된 애플리케이션 이름이므로 코드가 작동하지 않아야합니다 .
Vlad

@Albin : 감사합니다. 그 중 하나를 완전히 간과했습니다. : p @Jim : 질문이 편집기를 시작하는 방법을 묻는 것이라고 생각합니다. @Vlad : 감사합니다, 당신이 맞습니다.
Aren

11
사용은 Process.Start(filename)공격자가 대체 할 수있다 잠재적 명령 주입입니다 MyTextFile.txt위해 MyMalicious.bat또는 fdisk .... 사용하는 것이 좋습니다 Process.Start("notepad.exe", filename).
Geoff Bennett

29

많은 정보를 제공하지는 않지만 해당 파일 유형에 대한 기본 처리기에 지정된 응용 프로그램을 사용하여 컴퓨터의 모든 파일을 열고 싶다고 가정하면 다음과 같이 사용할 수 있습니다.

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

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

UseShellExecute 매개 변수는 열려는 파일 형식에 대해 기본 프로그램을 사용하도록 Windows에 지시합니다.

WaitForExit는 luanched 응용 프로그램이 닫힐 때까지 응용 프로그램을 기다리게합니다.


또한 if(File.Exists(fileToOpen))예외가 발생하지 않도록 a 를 사용하는 것이 좋습니다 .
Wiccio

26

기본 Windows 프로그램 (변경하지 않은 경우 메모장)으로 파일이 열립니다.

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

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

12

, 파일을 매개 변수로 Process.Start호출 notepad.exe하여 사용할 수 있습니다 .

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

2
그런데 % pathVariables %는이 메서드에서 작동하지 않습니다. Process.Start(@"%windir%\notepad.exe");Win32Exception : "파일을 찾을 수 없음"이 발생하지만 정상적으로 작동합니다.
Aren

@Aren : Environment.ExpandEnvironmentVariables ()를 호출하여 해결할 수 있습니다
sɐunıɔ ןɐ qɐp

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.