Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言用记事本打开文件#_C#_File - Fatal编程技术网

C# 用C语言用记事本打开文件#

C# 用C语言用记事本打开文件#,c#,file,C#,File,如何用c#打开文件?我不是指通过textreader和readline()阅读它。我的意思是在记事本中将其作为独立文件打开。您需要System.Diagnostics.Process.Start() 最简单的例子是: Process.Start("notepad.exe", fileName); 更通用的方法: Process.Start(fileName); 第二种方法可能是一种更好的做法,因为这将导致windows Shell使用其关联的编辑器打开您的文件。此外,如果指定的文件没有关联,

如何用c#打开文件?我不是指通过textreader和readline()阅读它。我的意思是在记事本中将其作为独立文件打开。

您需要
System.Diagnostics.Process.Start()

最简单的例子是:

Process.Start("notepad.exe", fileName);
更通用的方法:

Process.Start(fileName);
第二种方法可能是一种更好的做法,因为这将导致windows Shell使用其关联的编辑器打开您的文件。此外,如果指定的文件没有关联,它将使用windows中的
openwith…
对话框


请注意评论中的内容,感谢您的输入。我的quick n'dirty答案有点不正确,我已经更新了答案以反映正确的方式。

这将使用默认的windows程序打开文件(如果没有更改,请使用记事本)

您可以使用,调用
notepad.exe
,将文件作为参数

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

用于启动Notepad.exe的实例。

您没有提供太多信息, 但假设您只想打开计算机上的任何文件 对于为该文件类型的默认处理程序指定的应用程序, 您可以使用以下内容:

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

process.Start();
process.WaitForExit();
UseShellExecute参数告诉Windows对要打开的文件类型使用默认程序


WaitForExit将导致您的应用程序等待您关闭的应用程序。

是否要从程序启动记事本实例并使其打开特定文件?注意:在我使用.Net 2.0尝试时,
Process.Start
没有自动展开“%windir%”,尽管在中省略它或显式扩展它(
Environment.GetEnvironmentVariable(“windir”)
)成功运行。您可以将记事本克隆集成到应用程序中,并自定义它,使其按您所需的方式运行。我用C写了一个记事本克隆,你可以在这里找到:如果我是你,我会做一些转义。我同意这是一种方法,如果你想打开文档但不运行该程序,另一种方法是使用类似以下内容的东西:richTextBox1.LoadFile(program.editInC,RichTextBoxStreamType.UnicodePlainText)用于将实际内容加载到文件中。最好将文件名作为第二个参数传递。实际上,根据,您的代码不应该工作,因为
进程的单个参数。Start
是文档或应用程序文件名,而您的是与命令行参数组合的应用程序名。@Albin:谢谢,完全忽略了这一点:p@Jim:我相信问题是问如何启动编辑器@弗拉德:谢谢,你是对的。使用
Process.Start(filename)
是一种潜在的命令注入,攻击者可以用
MyTextFile.txt
替换
mymalistic.bat
fdisk…
。最好使用
Process.Start(“notepad.exe”,filename)
。顺便说一句,%pathVariables%不适用于此方法<代码>进程.Start(@“%windir%\notepad.exe”)引发Win32Exception:“找不到文件”,但正常情况下它应该可以工作。@Aren:这可以通过调用Environment.ExpandEnvironmentVariables()来解决,此外,如果(file.Exists(fileToOpen))可以避免运行异常。
System.Diagnostics.Process.Start( "notepad.exe", "text.txt");
var fileToOpen = "SomeFilePathHere";
var process = new Process();
process.StartInfo = new ProcessStartInfo()
{
    UseShellExecute = true,
    FileName = fileToOpen
};

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