GZİPİnputStream satır satır okuma
Bir dosyanın içinde .gz biçimi. Bu dosyayı okumak için bir java sınıfı GZİPİnputStream. Ancak, bu sınıf java BufferedReader sınıfını kapsamaz. Sonuç olarak, dosyayı satır satır okumak mümkün. Böyle bir şeye ihtiyacım var
reader = new MyGZInputStream( some constructor of GZInputStream)
reader.readLine()...
Ben benim sınıf oluşturma java Okuyucu ya da BufferedReader sınıfını genişletir ve değişken biri olarak GZİPİnputStream kullanın.
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.Reader;
import java.util.zip.GZIPInputStream;
public class MyGZFilReader extends Reader {
private GZIPInputStream gzipInputStream = null;
char[] buf = new char[1024];
@Override
public void close() throws IOException {
gzipInputStream.close();
}
public MyGZFilReader(String filename)
throws FileNotFoundException, IOException {
gzipInputStream = new GZIPInputStream(new FileInputStream(filename));
}
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
// TODO Auto-generated method stub
return gzipInputStream.read((byte[])buf, off, len);
}
}
Ama, bu kullandığımda çalışmıyor
BufferedReader in = new BufferedReader(
new MyGZFilReader("F:/gawiki-20090614-stub-meta-history.xml.gz"));
System.out.println(in.readLine());
Birisi .. devam etmek için nasıl tavsiye
CEVAP
Dekoratör temel kurulum bu gibi:
InputStream fileStream = new FileInputStream(filename);
InputStream gzipStream = new GZIPInputStream(fileStream);
Reader decoder = new InputStreamReader(gzipStream, encoding);
BufferedReader buffered = new BufferedReader(decoder);
Bu parçasında önemli konu encoding
değeridir. Bu karakter dosya metin kodlama. "US-ASCII", "UTF-8", "SHİFT-JIS", "ISO-8859-9", &üssün;? olanakları yüzlerce vardır, ve doğru seçimi genellikle dosya bulunamıyor kendisi belirlemez. Bant kanalı üzerinden belirtilmesi gerekir.
Örneğin, belki platform varsayılan. Bir ağ ortamında, ancak, bu son derece hassastır. Dosya komşu hücre otur diye yazdı, ama farklı bir varsayılan makine kodlama dosya.
Çoğu ağ protokolleri bir başlık veya başka bir meta açıkça karakter kodlamasını not için kullanın.
Bu durumda, içerik XML dosya uzantısı gibi görünüyor. XML"," bu amaç için. XML bildirimi öznitelik kodlama içerir Ayrıca, XML gerçekten metin olarak XML parser ile işlenmiş olmalıdır. XML-by-satır satır okuma kırılgan, özel bir durum gibi görünüyor.
Açıkça kodlama belirtmek için başarısız against the second commandment.Tehlike varsayılan kodlamayı kullan!
Bir node.js bir defada bir satır dosya...
Nasıl veri okuma için satır satır NSFi...
Python ile yeni satır ile ayrılmış dos...
C# Satır Satır Dosya Okuma...
Neden Standart girdiden okuma satır Py...