Как быстрее читать большие текстовые файлы на Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как быстрее читать большие текстовые файлы на Java?

Сообщение Anonymous »

Я только что создал простой алгоритм последовательного медианного фильтра и использовал два сканера для обработки ввода командной строки и сканер для чтения файла. Теперь проблема в том, что у меня есть текстовый файл из 2 000 000 строк из 2 столбцов текста в форме , и только чтение файла занимает много времени (более 2 минут).

По сути, программа просто захватывает входные данные, использует алгоритм медианного фильтра и записывает в выходной файл.

Ниже мой код:
main.java

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class main {
public static void main(String args[]) throws NumberFormatException, IOException{
String inFile; //Input file name.
int filterSize; //Filter size (odd integer >= 3).
String outFile; //Output file name.
int arraySize;
List elements = new ArrayList();
int index = 0;

//Scanner to take input file name, filter size and output file name.
Scanner keyboardInput = new Scanner(System.in);
System.out.println("Enter your keyboard input as follows: = 3> ");

//Assigning values to variables.
inFile = keyboardInput.next();
filterSize = keyboardInput.nextInt();
outFile = keyboardInput.next();

// //Reading file
// Scanner readFile = new Scanner(new File(inFile));
// readFile.nextInt(); //Get Array Size
//
// //Add elements into ArrayList
// while(readFile.hasNext()){
// readFile.nextInt();
// elements.add(Float.parseFloat(readFile.next()));
// }

//Reading file
BufferedReader br = new BufferedReader(new FileReader(inFile));
br.readLine(); //Get Array Size

String line;
while((line = br.readLine())!= null){
String[] nums = line.split(" ");
int val = Integer.valueOf(nums[0]);
elements.add(Float.valueOf(nums[1]));
}
br.close();

new Serial(elements, filterSize, outFile);

}
}


Serial.java

import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Serial {
int filterSize; //Filter size (odd integer >= 3).
String outFile; //Output file name.
int arraySize;
List elements = new ArrayList();
int index = 0;

public Serial(List elements, int filterSize, String outFile) throws FileNotFoundException, UnsupportedEncodingException {
this.elements = elements;
this.filterSize= filterSize;
this.outFile = outFile;

List tempElements = new ArrayList();
List outputElements = new ArrayList();

//Add first boundary element to ouput ArrayList
outputElements.add(this.elements.get(0));

while(elements.size() >= filterSize){
for(int i = 0; i
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»