JAVA:在默认编辑器中打开文件并跳转到行号

时间:2015-12-30 09:19:12

标签: java file

在Java中有没有办法在默认文本编辑器中打开文件并跳转到行号?只有用户输入文件名和行号。

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

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

但我想跳到特定的行号。

2 个答案:

答案 0 :(得分:2)

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,因为该文件应该启动,并且快速按键操作很糟糕。我们多次点击向下箭头键。

答案 1 :(得分:1)

您需要启动一个特定的文本编辑器,以便跳转到一行。像记事本++。

notepad++ FILENAME -n73

但是经常使用的默认文本编辑器如记事本(windows)或gedit(linux)确实没有这样的参数。