Java büyük dosyaları okuma | Netgez.com
SORU
1 Mart 2010, PAZARTESÄ°


Java büyük dosyaları okuma

Çok iyi java ve hafıza sorunları bilen birinin tavsiyesine ihtiyacım var. Büyük bir dosya var (1.5 GB gibi bir şey) ve birçok bu dosyayı kes(örneğin 100 küçük dosyaları küçük dosyalara ihtiyacım var. Bunu yapmak için genellikle Biliyorum (bir BufferedReader kullanarak), ama eğer herhangi bir tavsiye bunu nasıl hafıza veya hızlı ipuçları ile ilgili varsa bilmek isterim. Benim dosya metin containt, ikili ve satır başına 20 karakter var.

CEVAP
1 Mart 2010, PAZARTESÄ°


Bellekten tasarruf etmek için, gereksiz yere/bellek veri depolama yinelenen değil (yani döngü dışında bir değişken atayın. Sadece çıkış işlemihemengiriş gelir gelmez.

Gerçekten BufferedReader ya da kullanmıyor olsanız fark etmez. Bazı örtülü olarak işaret ediyor olarak önemli ölçüde daha fazla bellek maliyeti olmaz. En yüksek performans sadece birkaç % vuracaktır. Aynı NİO kullanarak uygular. Sadece ölçülebilirlik, bellek kullanımı değil artıracaktır. Sadece iş parçacığı aynı dosya üzerinde çalışan yüzlerce olunca ilginç bir hal alacaktır.

Sadece dosya döngü, hemen okumak, satır sayısı ve 100, sonra da bir sonraki dosyaya geçiş ulaşırsa, vesaire gibi diğer dosya için her satırı yazın.

Örnek başlama:

String encoding = "UTF-8";
int maxlines = 100;
BufferedReader reader = null;
BufferedWriter writer = null;

try {
    reader = new BufferedReader(new InputStreamReader(new FileInputStream("/bigfile.txt"), encoding));
    int count = 0;
    for (String line; (line = reader.readLine()) != null;) {
        if (count   % maxlines == 0) {
            close(writer);
            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("/smallfile"   (count / maxlines)   ".txt"), encoding));
        }
        writer.write(line);
        writer.newLine();
    }
} finally {
    close(writer);
    close(reader);
}

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • FailArmy U

    FailArmy U

    29 AÄžUSTOS 2009
  • iZAPPA

    iZAPPA

    16 Temmuz 2010
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011