Jaki jest prawdopodobnie najszybszy sposób czytania stosunkowo dużych plików za pomocą metod I/O Java? Moje obecne rozwiązanie wykorzystuje zapisanie BufferedInputStream
do tablicy bajtów z przydzielonym 1024 bajtami. Każdy bufor jest następnie zapisywany w postaci ArrayList
do późniejszego wykorzystania. Cały proces jest wywoływany przez osobny wątek (interfejs wywoływalny).Najszybszy sposób odczytywania stosunkowo dużych plików bajtowych w Javie
Niezbyt szybki.
ArrayList<byte[]> outputArr = new ArrayList<byte[]>();
try {
BufferedInputStream reader = new BufferedInputStream(new FileInputStream (dir+filename));
byte[] buffer = new byte[LIMIT]; // == 1024
int i = 0;
while (reader.available() != 0) {
reader.read(buffer);
i++;
if (i <= LIMIT){
outputArr.add(buffer);
i = 0;
buffer = null;
buffer = new byte[LIMIT];
}
else continue;
}
System.out.println("FileReader-Elements: "+outputArr.size()+" w. "+buffer.length+" byte each.");
Zobacz biblioteki Apache Commons, aby uzyskać więcej opcji. Aby ustalić prędkość, spójrz na książkę o wydajności Java Performance O'Reilly. – therobyouknow
Obecnie ignorujesz wartość zwracaną przez twoje wywołanie 'read()'. * Nie rób tego. * –