2011-06-15 95 views
3

这里是我的代码:如何阅读文本文件导入的JTextArea中的Java Swing

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长度= 586个numreads = 4 CGGGAAATTATCcGCGCCTTCACCGCCGCCGGTTCCACCGACGAACGGATACTGCGtGaa ggCCGCGATCCCGTCggaCGGAAAaCGCCcTGGCCCGGGAaCATACCGTTCGGGCCGCCA AGTGTTATAGCCGGACCACTTGTCAGAACATTTCCaaTCCGAAGATGTGAGTtCGGAAGg TAAAAGCCCGACAAGTTGCGCGgTGAATTTACCTTtACcGCACGATATGCGTCCGTATTA AaGAAAaGTTCGAAATTATCAGTAAGGCCGACCTGAAaGCTGACCGGGAGTTCAACAAAA TCTGCATCACCcGGgTCACGGTCGAAATTGCTGTACGCGGCGCTGAACGTAAATTCACCC TTTcTAAGGGTGTCGCcGTCGTAAACCGTAAaCAaGCCGGTAGCGCCGCCCATCGGGCCG CCGGTACCAACCGTCGGTGCCGTGTTTCTtGCATCATTGTCCGATCGAGCGTTCTCGTCC GCTTGTGCAAaTCCTGCAaTAGCTAACGTGAAAACGATCAGAGCTGTTGTAAATACTCTA TAAGCGAGATTCATCACATTCCTCcGCCGAAATAAAAAGTTAATTt

contig00002长度= 554个numreads = 4 TGCGCCAaCCGCGCTCTtCATAAaTGGGCACTGCTCCCGATGGCCgACTCGGGCGGTTCG CCATGAGATCTTTGCCtACCcAGgAaCtCACcACCAAGTCTGATTGCTGTGTGTTTtCTT CAAGTCCCTATTTCTATTCtCTTtAATGGAACCCGTAGGAAACCCGTGTAGGACGCGGGA aCCGCACTTgAAGGGGGAGGCGCGGGGTACCGGtCCGGGAACGTACGGGTACCGGCGGGG gAGGGGAGGGGGACCgCTCCGGGAAGGCCAGGGGACGGATTGGGGAAGGgCGGGTACCGA AGCGGGgAAaTGGGggAaCcGGCGAGAGGGTTCCTCGCTAAGTGGGGGAAATaGGGGAAA GGTTGACCAGTGGTtCCCcGCTCTCGTAACATGCCTCAGATAGCGCCATCCGCTGTACCT GGtcaggtcGctggcaacttcggccgagcaggtgaacccgaaaggtgagggtcagtgtga cacaccaaccgaacaccgacgaggcaagcgtaggagccggcgtggccgcgcccggcggcg ctgaggactcctcg

但是示出了通过跳过的前两行的输出。

这是什么原因?

回答

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); 
} 
+0

其while状态中的'while'循环和'readLine()'也不需要。 – 2014-11-11 15:02:14

7

你不需要while循环,或ReadLine方法。请致电jtextArea1.read(reader, "jTextArea1")

编辑:更新以下您的评论。如果要跳过以“>”开头的所有行,则需要手动读取文件,然后将每行添加到textArea。

因此,像:

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

感谢rly,但我想跳过以符号“>”开头的所有行 – jack1 2011-06-15 10:51:07

+1

@ jack1我已在您的评论中更新了我的回答。 – 2011-06-15 10:56:58

+1

thx先生,我写了以下代码:尝试文件文件=新文件(“c:\\ ad.txt”); FileReader fr = new FileReader(file); BufferedReader reader = new BufferedReader(fr); String textLine; ((textLine = reader.readLine())!= null){!textLine.startsWith(“>”)){textTextArea1.append(textLine +“\ n”); } jTextArea1.read(reader,“jTextArea1”); (IOException)ioe){ System.err.println(ioe); System.exit(1); } – jack1 2011-06-15 11:49:20

0

Correctlly是:

 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); 
     } 
+0

此代码似乎无法将任何内容加载到'jTextArea'中。 – 2014-11-11 15:04:02

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

你只需要上面的两行从文件中读取,放入JTextArea中....

0

这个问题一定已经解决了,但问题仍然没有答案为什么t他的前两行被跳过

您创建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,因为文件已被完全读取。


要加载在JTextComponent文本使用其read方法通过PhillBhushankumar的建议。

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