2012-05-13 4 views
-2

Я делаю игру, но для ее установки требуется 7zip для распаковки файлов, поэтому я включил установщик 7zip. Я создал JFrame с JTextArea в нем, чтобы ввести 7zip icense, но я не могу получить BufferedReader для чтения всего txt-файла (его 57 строк, и я думаю, что его главным образом потому, что Bufferedreader не был предназначен для чтения многих строк.) Можете ли вы помогите мне прочитать файл, чтобы я мог добавить лицензию в игру. Спасибо, ДжексонКак читать большие текстовые файлы - java

EDIT Я чувствую себя так любил, когда вы, ребята, выплатить NEWB не зная вещи -_-

+3

Что значит 'может' t получить 'BufferedReader' для чтения 'на самом деле означает? И с каких пор 57 строк - «большой текстовый файл»? Я использовал 'BufferedReader' для чтения миллионов строк. Ваше утверждение о том, что оно не предназначено для чтения 57, не имеет оснований. – EJP

+2

Покажите нам, что вы пробовали. –

+0

@EJP только учебные пособия, которые я могу найти, показали мне, как читать 1 строку, а не 57 –

ответ

1

Недавно я написал программу, которая считывала 1,1 миллиарда строк из gzip-файлов с помощью BufferedReader.

Самый простой способ читать файлы целиком, как малые, как 57 линий является использование

String text = FileUtils.readFileToString(new File("uncompressedfile.txt")); 

или

String text = FileUtils.readFileToString(new File("uncompressedfile.txt"), "UTF-8"); 

или если сжать gzip'ом (аналогично с 7zip)

String text = IOUtils.toString(new GZipInputStream("compressedfile.txt.gz")); 
+0

где мне импортировать FileUtils? –

+1

Его часть IO Apache Common - http://commons.apache.org/io/apidocs/org/apache/commons/io/IOUtils.html –

+0

спасибо. Я загрузил его, он работал, но теперь я получаю это исключение: java.nio.charset.UnsupportedCharsetException: 7zip_license.txt –

1

Просто читать полный текст из файла. сохраните его в переменной String, а затем поместите это значение в JTextArea, потому что 57 строк не так много, чтобы хранить в памяти JVM.

0

Вы можете сделать это двумя способами: -

1> Использование сканера

void read() throws IOException { 
    StringBuilder text = new StringBuilder(); 
    String NL = System.getProperty("line.separator"); 
    Scanner scanner = new Scanner(new FileInputStream(fFileName), fEncoding); 
    try { 
     while (scanner.hasNextLine()){ 
     text.append(scanner.nextLine() + NL); 
     } 
    } 
    finally{ 
     scanner.close(); 
    } 
    log("Text read in: " + text); 
    } 

2> The BufferredReader

static public String getContents(File aFile) { 

    StringBuilder contents = new StringBuilder(); 

    try { 

     BufferedReader input = new BufferedReader(new FileReader(aFile)); 
     try { 

     while ((line = input.readLine()) != null){ 
      contents.append(line); 
      contents.append(System.getProperty("line.separator")); 
     } 
     } 
     finally { 
     input.close(); 
     } 
    } 
    catch (IOException ex){ 
     ex.printStackTrace(); 
    } 

    return contents.toString(); 
    } 

57 линий не то, что огромный, BufferedReader используется для чтения файлов в гб-х :)