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
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);
}
Nasıl JSP dosyaları Java kod önlemek i...
Yönetmek büyük ikili gıt dosyaları...
Nasıl&; derleme quot&; Java sınıf dosy...
Nasıl hat Java kullanarak büyük metin ...
Hızlı okuma çok büyük bir tablo R data...