2012-05-13 12 views
-2

私はゲームを作っていますが、インストールするには、ファイルを解凍するために7zipが必要です。そのため、7zipインストーラーが含まれています。私は、JTextAreaを入力して7zip icenseを入力するJFrameを作成しましたが、BufferedReaderはtreadファイル全体を読み込むことはできません(その57行は、Bufferedreaderがその多くの行を読み込むように設計されていなかったためです)。ファイルを読み込めるようにして、ライセンスをゲームに追加することができます。 おかげで、 ジャクソン大きなテキストファイルを読む方法 - Java

EDIT は、私はそうあなたたちは、物事を知らないために初心者くさいを支払う際に愛さ-_-

+3

内のファイルを読み取るために使用されてきました'BufferedReader'を実際に読み取るようにしますか?そして、いつから57行が「大きなテキストファイル」ですか?私は 'BufferedReader'を使って何百万もの行を読みました。あなたが57を読むように設計されていないというあなたの主張は、実際には根拠がありません。 – EJP

+2

あなたが試したことを私たちに教えてください。 –

+0

@EJP私が見つけることができる唯一のチュートリアルは、1行を読む方法を教えてくれました。57 –

答えて

1

私は最近、gzippedファイルからBufferedReaderで11億行を読み込むプログラムを書いています。

小さな57としてラインとして全体のファイルを読み取るための最も簡単な方法は

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

又は

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

場合、または(同様に7zipを有する)gzipで圧縮を使用することである

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

FileUtilsはどこからインポートできますか? –

+1

Apache CommonのIOの一部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

2通りの方法があります。 -

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の使用> 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のは '缶' 何ギガバイトの:)

関連する問題