2015-04-14 53 views
1

我有一個文件可以說「test.txt」,(與java程序相同的目錄),它具有數字,如下所示。我的目標是啓動一個從文件中讀取數據的進程生成器,然後我將它繪製到一個java JPanel。java processbuilder打開文本文件讀取數據

  1. 我明白要從文本文件中讀取數據,我需要讀取輸入流。 問題1:如何逐行閱讀?因此,在第一行讀取之後,流程生成器會轉到下一個?

  2. 我很困惑如何真正開始這樣的過程。即Q2:如何使用processBuilder打開文本文件?

對於第二個問題,我試過這樣的事情。屏幕上沒有任何事情發生,因爲我沒有指示任何事情發生,但它是在正確的軌道上?

//get data back 
    public void returnData() 
    { 
    try { 
    ProcessBuilder pb; 
    pb = new ProcessBuilder("test.txt"); 
    Process runCode = pb.start(); 
    runCode.waitFor(); 
    } 
    catch (IOException | InterruptedException exp) { 
     System.out.println(exp); 
    } 
    } 

的test.txt

0 
1 
3 
5 
2 
3 
+0

1- [基本I/O](https://docs.oracle.com/javase/tutorial/essential/io/); 2-我不會,但你可以使用[Dealtop#open或Desktop#edit](https://docs.oracle.com/javase/tutorial/uiswing/misc/desktop.html);如果你真的熱衷於使用ProcessBuilder,那麼你將需要知道可以打開文本文件並將其作爲參數傳遞給該命令的可執行命令,並且可能從Process讀取InputStream ... – MadProgrammer

回答

0

您需要的文件發送到標準輸出,如 一個Windows程序:

type filename 

對於Unix

cat filename 

然後e使用ProcessBuilder執行此命令。
InputStreamReader讀取流和BufferedReader逐行讀取。

BufferedReader in 
     = new BufferedReader(new InputStreamReader(processstream)); 
in.readLine(); 

這是一個真正依賴於平臺的方式來做到這一點,當基本的Java IO會以便攜的方式做到這一點。

FileReader訪問文件和BufferedReader逐行讀取。

BufferedReader in 
      = new BufferedReader(new FileReader("foo.in")); 
in.readLine(); 
+0

謝謝,我會放棄一下,看看它是如何發生的,並讓你知道 – lecardo