2013-05-16 56 views
2

我有這個程序,讓你打開一個文件,並將其一次全部使用下面的代碼到一個JTextArea讀它:一次添加一行到字符串

try{ 
    String fileContents = new Scanner(new File(fileName)).useDelimiter("\\Z").next(); 
    }catch(FileNotFoundException ex){ 
    ex.printStackTrace(); 
    } 

    myTextArea.setText(fileContents); 

和工作原理。但我的問題是,我怎樣才能將這個讀入我的fileContents字符串中,並且每當我換行符時仍然會在換行符中添加它?

這裏是我有什麼,但是這使這一切在一條線在我的textarea:

try{ 
Scanner contentsTextFile = new Scanner(new File(fileName)); 
while(contentsTextFile.hasNext()){ 
    fileContents = contentsTextFile.useDelimiter("\r\n|\n").nextLine(); 
    } 

}catch(FileNotFoundException ex){ 
    ex.printStackTrace(); 
} 

    myTextArea.setText(fileContents); 

我想看到的是使用一個分隔符,只有讀入這一行文字中取得了新的生產線一次一行,而不是整個文件。

有人可以幫忙嗎?

回答

3

您可以使用BufferedReader讀取行由行文件和使用的JTextAreaappend()方法讀取每一行。爲了方便起見,將JTextArea包裹在適當大小的JScrollPane中,如here所示。如果您預計有任何延遲,請使用SwingWorker在後臺讀取,並在process()中調用append()

BufferedReader in = new BufferedReader(new FileReader(fileName)); 
String s; 
while ((s = in.readLine()) != null) { 
    myTextArea.append(s + "\n"); 
} 
+0

是的,這是我決定我會做的。我使用'FileReader'和'BufferedReader'獲取文件內容,然後使用'myTextArea.append(contents)'一次將它們追加到'JTextArea';' –

+1

+1但JTextComponent.read/write接受文件中的分隔符(雙向I/O) – mKorbel

+2

@mKorbel:同意對'文檔'進行不可分割的操作。除了Scanner外! :-) – trashgod

3

最簡單的方法是使用JTextComponent.read(Reader,Object)其中:

初始化從流。這將創建適合組件的模型,並從流中初始化模型。默認情況下,這將以純文本的形式加載模型。以前的模型內容被丟棄。

+0

我不知道我明白你在告訴我什麼。我不能一次只讀一行到一個字符串,並將它連接到字符串已經包含的內容上,併爲每個新連接提供一個換行符? –

+0

嘗試一下,看看它做了什麼。 –

+0

讓我試試這個,我會回覆你。在此先感謝 –

相關問題