Java : Open file in default editor and jump to line number

标签 java file

在 Java 中有什么方法可以在默认文本编辑器中打开文件并跳转到行号?用户只会输入文件名和行号。

我可以使用以下代码在默认编辑器中打开文件

java.awt.Desktop.getDesktop().edit(new File(filename));

但是我想跳转到特定的行号。

最佳答案

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;

// ...

    public void solve() {
        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice screen = env.getDefaultScreenDevice();
        Robot robot = null;
        try {
            robot = new Robot(screen);
        } catch (AWTException e) {
            e.printStackTrace();
        }

        int lineNumber = 15;     // your line number

        try {
            Desktop.getDesktop().edit(new File(filename));
            Thread.sleep(100L);
            for (int i = 0; i < lineNumber; i++) {
                robot.keyPress(KeyEvent.VK_DOWN);
                Thread.sleep(10L);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

您必须使用 Thread.sleep,因为该文件应该启动,快速按键是不好的。我们多次单击向下箭头键。

关于Java : Open file in default editor and jump to line number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34526461/

相关文章:

java:表示色阶上浮点值的范围

java - 我的 Action Bar 的 SearchView 如何在 ListView 上工作?

java - 如何使用 Java API 在 Alfresco 中创建文档链接?

java - 具有多个装饰器文件的站点网

Java在上传到AWS云之前创建文件副本

java - 使用 tomcat7-maven-plugin 部署 Tomcat 失败,错误为 "Cannot invoke Tomcat manager: Connection reset by peer: socket write error"

java - 将泛型类型对象写入 java 文件

C# FileContentResult 文件下载到自定义文件夹中

file - VB6 不会创建 EXE 文件 - 但它会使用吗?

perl - 为什么 prinseqlite perl 循环中没有写入输出文件?