在文件中设置光标位置

时间:2016-04-13 15:09:44

标签: c# file

我只是想知道,是否有可能在文本文件中设置光标的位置,我使用以下代码打开文本文件:

if (File.Exists(file))
{
       Process.Start(file);//file is a string that contain the file path
}

正如您所看到的那样,打开的文件是另一个进程,如果有另一种方法可以使用C#打开文件,这种方式可以让我在文件中设置光标位置。

例如:

20th行或第200个字符处打开文件。 我想打开扩展名为.java的文件,所以我想使用默认程序来处理我的文件。

2 个答案:

答案 0 :(得分:3)

虽然使用通用文本编辑器是不可能的,并且系统上的默认文本编辑器可能无法实现,但是可以使用许多替代文本编辑器。例如,您可以安装notepad ++并使用可用的命令行开关:

notepad++ [--help] [-multiInst] [-noPlugins] [-lLanguage]
 [-nLineNumber] [-cColumnNumber] [-xPos] [-yPos]
 [-nosession] [-notabbar] [-ro] [-systemtray] [-alwaysOnTop] 
[-Llanguege code] [-r]

然后您可以使用this post中的代码跳转到文件中的特定位置。

编辑:如果您需要到达特定字符位置,您可以阅读该文件并找出您要查找的字符所在的行号和列号。在进行此处理时,不要忘记包含换行符(可能有1个或2个)!

答案 1 :(得分:0)

不,不可能。当您使用Process.Start“运行”外部文件时,您实际上已将控制权传递给操作系统并说“请根据其文件扩展名在其默认应用程序中打开此文件”。当然,结果取决于您配置的打开文件类型的应用程序。

在大多数情况下,文本文件会在Notepad.exe中打开,但是如果你安装了另一个文本编辑器,就像我拥有的​​那样(UltraEdit),它很可能会在那里打开。无论哪种方式,操作系统都不保证它将运行任何应用程序。除此之外,您无法控制光标(如果有的话)在目标应用程序中的位置。例如,可以配置您的操作系统,以便无论出于何种原因在Windows Media Player中打开txt文件。没有“光标位置”的概念......