有沒有什麼方法可以在Java中使用默認文本編輯器打開文件並跳轉到行號?只有文件名和行號纔會從用戶輸入。JAVA:在默認編輯器中打開文件並跳轉到行號
我能夠在默認編輯器中打開文件,使用下面的代碼
java.awt.Desktop.getDesktop().edit(new File(filename));
但我要跳到特定的行號。
有沒有什麼方法可以在Java中使用默認文本編輯器打開文件並跳轉到行號?只有文件名和行號纔會從用戶輸入。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,因爲該文件應該引導,並且快捷鍵按下不好。我們多次點擊向下箭頭鍵。
我不會推薦這個解決方案,因爲當您將焦點轉移到另一個窗口時,如果捲動到第5000行時可能會出錯。但我真的很喜歡這種方法的創造力+1 – ArcticLord
你需要啓動一個特定的文本編輯器,讓你跳轉到一行。像記事本++。
notepad++ FILENAME -n73
但經常使用默認的文本編輯器如記事本(Windows)或gedit中(Linux)的一點兒也不具備這樣的參數。
適用於記事本++。但我想讓我的應用程序編輯器獨立。示例:如果用戶將UltraEditor作爲其默認編輯器,則它不具有此類參數。 – Ajinkya
跳轉到行是程序相關的,因此您將無法以通用的方式執行此操作。上面的命令 – Marcinek