2015-12-30 100 views
3

有沒有什麼方法可以在Java中使用默認文本編輯器打開文件並跳轉到行號?只有文件名和行號纔會從用戶輸入。JAVA:在默認編輯器中打開文件並跳轉到行號

我能夠在默認編輯器中打開文件,使用下面的代碼

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

但我要跳到特定的行號。

+6

跳轉到行是程序相關的,因此您將無法以通用的方式執行此操作。上面的命令 – Marcinek

回答

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,因爲該文件應該引導,並且快捷鍵按下不好。我們多次點擊向下箭頭鍵。

+0

我不會推薦這個解決方案,因爲當您將焦點轉移到另一個窗口時,如果捲動到第5000行時可能會出錯。但我真的很喜歡這種方法的創造力+1 – ArcticLord

1

你需要啓動一個特定的文本編輯器,讓你跳轉到一行。像記事本++。

notepad++ FILENAME -n73 

但經常使用默認的文本編輯器如記事本(Windows)或gedit中(Linux)的一點兒也不具備這樣的參數。

+0

適用於記事本++。但我想讓我的應用程序編輯器獨立。示例:如果用戶將UltraEditor作爲其默認編輯器,則它不具有此類參數。 – Ajinkya

相關問題