如何在Java Swing中将文本文件读入jtextarea

时间:2011-06-15 10:08:23

标签: java swing jtextarea bufferedreader filereader

这是我的代码:

try {
    String textLine;
    FileReader fr = new FileReader("ad.txt");
    BufferedReader reader = new BufferedReader(fr);
    while((textLine=reader.readLine()) != null) {
        textLine = reader.readLine();
        jTextArea1.read(reader, "jTextArea1");
    }
}
catch (IOException ioe) {
    System.err.println(ioe);
    System.exit(1);
}

我的.txt文件包含以下内容:

  

contig00001 length = 586 numreads = 4   CGGGAAATTATCcGCGCCTTCACCGCCGCCGGTTCCACCGACGAACGGATACTGCGtGaa   ggCCGCGATCCCGTCggaCGGAAAaCGCCcTGGCCCGGGAaCATACCGTTCGGGCCGCCA   AGTGTTATAGCCGGACCACTTGTCAGAACATTTCCaaTCCGAAGATGTGAGTtCGGAAGg   TAAAAGCCCGACAAGTTGCGCGgTGAATTTACCTTtACcGCACGATATGCGTCCGTATTA   AaGAAAaGTTCGAAATTATCAGTAAGGCCGACCTGAAaGCTGACCGGGAGTTCAACAAAA   TCTGCATCACCcGGgTCACGGTCGAAATTGCTGTACGCGGCGCTGAACGTAAATTCACCC   TTTcTAAGGGTGTCGCcGTCGTAAACCGTAAaCAaGCCGGTAGCGCCGCCCATCGGGCCG   CCGGTACCAACCGTCGGTGCCGTGTTTCTtGCATCATTGTCCGATCGAGCGTTCTCGTCC   GCTTGTGCAAaTCCTGCAaTAGCTAACGTGAAAACGATCAGAGCTGTTGTAAATACTCTA   TAAGCGAGATTCATCACATTCCTCcGCCGAAATAAAAAGTTAATTt

     

contig00002 length = 554 numreads = 4   TGCGCCAaCCGCGCTCTtCATAAaTGGGCACTGCTCCCGATGGCCgACTCGGGCGGTTCG   CCATGAGATCTTTGCCtACCcAGgAaCtCACcACCAAGTCTGATTGCTGTGTGTTTtCTT   CAAGTCCCTATTTCTATTCtCTTtAATGGAACCCGTAGGAAACCCGTGTAGGACGCGGGA   aCCGCACTTgAAGGGGGAGGCGCGGGGTACCGGtCCGGGAACGTACGGGTACCGGCGGGG   gAGGGGAGGGGGACCgCTCCGGGAAGGCCAGGGGACGGATTGGGGAAGGgCGGGTACCGA   AGCGGGgAAaTGGGggAaCcGGCGAGAGGGTTCCTCGCTAAGTGGGGGAAATaGGGGAAA   GGTTGACCAGTGGTtCCCcGCTCTCGTAACATGCCTCAGATAGCGCCATCCGCTGTACCT   GGtcaggtcGctggcaacttcggccgagcaggtgaacccgaaaggtgagggtcagtgtga   cacaccaaccgaacaccgacgaggcaagcgtaggagccggcgtggccgcgcccggcggcg   ctgaggactcctcg

但是跳过前两行显示输出。

这是什么原因?

5 个答案:

答案 0 :(得分:7)

您不需要while循环或readLine方法。只需致电jtextArea1.read(reader, "jTextArea1")

修改:根据您的评论更新。如果您想跳过以>开头的所有行,您需要手动读取该文件,然后将每行附加到textArea。

类似于:

String line;
while ((line = reader.readLine()) != null)
{
    if (!line.startsWith(">"))
    {
        jTextArea.append(line + "\n");
    }
}

答案 1 :(得分:5)

使用:

FileReader reader = new FileReader("filename.txt");
txtarea.read(reader, "filename.txt"); //Object of JTextArea

您只需要以上两行来读取文件并将其放入JTextArea ...

答案 2 :(得分:0)

textLine = reader.readLine();被叫两次......

修正:

try {
    String textLine;
    FileReader fr = new FileReader("ad.txt");
    BufferedReader reader = new BufferedReader(fr);

    while((textLine=reader.readLine()) != null){
        // textLine = reader.readLine(); // Remove this line
        jTextArea1.read(reader, "jTextArea1");
    }
}
catch (IOException ioe) {
    System.err.println(ioe);
    System.exit(1);
}

答案 3 :(得分:0)

正确的是:

try {
    FileReader fr = new FileReader("tablica.txt");
    BufferedReader reader = new BufferedReader(fr);

    do {
        l.read(reader, null);
    }

    while ((textLine=reader.readLine()) != null)
        ;

}

catch (IOException ioe) {
    System.err.println(ioe);
    System.exit(1);
}

答案 4 :(得分:0)

问题肯定已经解决了,但是仍然没有回答问题为什么跳过前两行

您创建reader,然后从文件中读取前两行,其余行将加载到jTextArea1

您的代码:

/* 1 */ while((textLine=reader.readLine())!=null){
/* 2 */     textLine = reader.readLine();
/* 3 */     jTextArea1.read(reader,"jTextArea1");
        } 

第1行从文件中读取第一行。然后在第2行从文件中读取第二行的同时,第3行将文件的其余部分读入jTextArea1

在while循环的下一次迭代中,reader.readLine()返回null,因为文件已完全读取。


要按照readPhill的建议,JTextComponent使用Bhushankumar方法加载文字。

read未使用JTextArea的第二个参数,因此传递null是安全的。第二个参数通常用于存储加载文件的URL以解析相对引用,例如HTMLDocument中的链接。