Как прочитать текстовый файл в jtextarea в Java Swing - PullRequest
3 голосов
/ 15 июня 2011

Вот мой код:

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 чисел = 4 CGGGAAATTATCcGCGCCTTCACCGCCGCCGGTTCCACCGACGAACGGATACTGCGtGaa ggCCGCGATCCCGTCggaCGGAAAaCGCCcTGGCCCGGGAaCATACCGTTCGGGCCGCCA AGTGTTATAGCCGGACCACTTGTCAGAACATTTCCaaTCCGAAGATGTGAGTtCGGAAGg TAAAAGCCCGACAAGTTGCGCGgTGAATTTACCTTtACcGCACGATATGCGTCCGTATTA AaGAAAaGTTCGAAATTATCAGTAAGGCCGACCTGAAaGCTGACCGGGAGTTCAACAAAA TCTGCATCACCcGGgTCACGGTCGAAATTGCTGTACGCGGCGCTGAACGTAAATTCACCC TTTcTAAGGGTGTCGCcGTCGTAAACCGTAAaCAaGCCGGTAGCGCCGCCCATCGGGCCG CCGGTACCAACCGTCGGTGCCGTGTTTCTtGCATCATTGTCCGATCGAGCGTTCTCGTCC GCTTGTGCAAaTCCTGCAaTAGCTAACGTGAAAACGATCAGAGCTGTTGTAAATACTCTA TAAGCGAGATTCATCACATTCCTCcGCCGAAATAAAAAGTTAATTt

длина contig00002 = 554 числа = 4 TGCGCCAaCCGCGCTCTtCATAAaTGGGCACTGCTCCCGATGGCCgACTCGGGCGGTTCG CCATGAGATCTTTGCCtACCcAGgAaCtCACcACCAAGTCTGATTGCTGTGTGTTTtCTT CAAGTCCCTATTTCTATTCtCTTtAATGGAACCCGTAGGAAACCCGTGTAGGACGCGGGA aCCGCACTTgAAGGGGGAGGCGCGGGGTACCGGtCCGGGAACGTACGGGTACCGGCGGGG gAGGGGAGGGGGACCgCTCCGGGAAGGCCAGGGGACGGATTGGGGAAGGgCGGGTACCGA AGCGGGgAAaTGGGggAaCcGGCGAGAGGGTTCCTCGCTAAGTGGGGGAAATaGGGGAAA GGTTGACCAGTGGTtCCCcGCTCTCGTAACATGCCTCAGATAGCGCCATCCGCTGTACCT GGtcaggtcGctggcaacttcggccgagcaggtgaacccgaaaggtgagggtcagtgtga cacaccaaccgaacaccgacgaggcaagcgtaggagccggcgtggccgcgcccggcggcg ctgaggactcctcg

Но показывает вывод, пропуская первые две строки.

В чем причина этого?

Ответы [ 5 ]

7 голосов
/ 15 июня 2011

Вам не нужен цикл while или метод readLine.Просто позвоните jtextArea1.read(reader, "jTextArea1")

Изменить : обновить после вашего комментария.Если вы хотите пропустить все строки, начинающиеся с>, вам нужно будет прочитать файл вручную и затем добавить каждую строку к вашей textArea.

Так что-то вроде:

String line;
while ((line = reader.readLine()) != null)
{
    if (!line.startsWith(">"))
    {
        jTextArea.append(line + "\n");
    }
}
5 голосов
/ 24 декабря 2012

Использование:

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

Для чтения из файла и помещения его в JTextArea нужны только две вышеуказанные строки ...

0 голосов
/ 11 ноября 2014

Проблема должна быть решена к тому времени, но до сих пор нет ответа на вопрос , почему пропускаются первые две строки .

Вы создаете reader, а затем читаетепервые две строки из файла, остальные строки загружаются в jTextArea1.

Ваш код:

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

Строка 1 читает первую строку из файла.Затем в теле while вы читаете вторую строку из файла в строке 2. Строка 3 читает остальную часть файла в jTextArea1.

На следующей итерации цикла while, reader.readLine() возвращаетnull, поскольку файл полностью прочитан.


Чтобы загрузить текст в JTextComponent, используйте его метод read, предложенный Phill и Bhushankumar .

Второй параметр read не используется JTextArea, поэтому безопасно передавать null.Этот второй параметр обычно используется для сохранения в URL загруженного файла для разрешения относительных ссылок, например ссылок в HTMLDocument.

0 голосов
/ 28 ноября 2011

Правильно это:

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 голосов
/ 15 июня 2011

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);
}
...