Как прочитать текстовый файл в 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 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

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

Что является причиной этого?


person jack1    schedule 15.06.2011    source источник


Ответы (5)


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

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

Итак, что-то вроде:

String line;
while ((line = reader.readLine()) != null)
{
    if (!line.startsWith(">"))
    {
        jTextArea.append(line + "\n");
    }
}
person Community    schedule 15.06.2011
comment
спасибо за ответ, но я хочу пропустить все строки, начинающиеся с символа › - person jack1; 15.06.2011
comment
спасибо, сэр, я написал следующий код: try { File file = new File(c:\\ad.txt); FileReader fr = новый FileReader(файл); Читатель BufferedReader = новый BufferedReader(fr); Строка textLine; while((textLine=reader.readLine())!=null){ if(!textLine.startsWith(›)) { jTextArea1.append(textLine + \n); } jTextArea1.read(читатель,jTextArea1); } } catch (IOException ioe) { System.err.println(ioe); Система.выход(1); } - person jack1; 15.06.2011

Использовать:

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

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

person Bhushankumar Lilapara    schedule 23.12.2012

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

Вы создаете 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 и Бхушанкумар.

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

person Alexey Ivanov    schedule 11.11.2014

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);
}
person Talha Ahmed Khan    schedule 15.06.2011
comment
Цикл while и readLine() в его условии тоже не нужны. - person Alexey Ivanov; 11.11.2014

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

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);
}
person giacomo    schedule 28.11.2011
comment
Этот код ничего не загружает в jTextArea. - person Alexey Ivanov; 11.11.2014