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.