Ich habe eine Datendatei mit den Einträgen (5 Zahlen pro Zeile.Numerische Datendatei schreibt Art Ausgabe
8,1,3,7,9
2,4,7,10,11
9,99,4,7,3
5,1,2,3,17
Die komplette Datendatei extrem groß ist, aber ähnliche Daten im gesamten
Ich versuche zu lesen die Daten Zeile für Zeile aus der Eingabedatei, sortieren die Zahlen auf dieser Linie,
dann die sortierten Zahlen auf eine neue Ausgabedatei schreiben.
Anstatt die gesamte Eingabedatei in einem Array oder einem Speicher zu speichern, ich möchte um nur die Nummern für jede Zeile zu speichern, Zeile für Zeile, sortiere sie und schreibe diese sortierten Zahlen in die nächste Zeile der Ausgabedatei. Ich habe eine erste Möglichkeit gefunden, den kleineren Datensatz in eine andere Datei zu schreiben und zu schreiben, aber er schreibt das Array, das in geschweiften Klammern wie [ 1, 3, 7, 8, 9]
anstelle von 1, 3, 7, 8, 9
erscheint. Wenn ich herausfinde, was der richtige, effizientere Weg ist, habe ich auch geplant, eine separate Klasse nur für die Sortierung zu erstellen und würde eine Zeile nach der anderen aus der Datendatei lesen, sie an die separate Klasse weitergeben, die sie sortieren und sortieren würde schreibe es in die Ausgabedatei. Wie kann ich jede Zeile einzeln nacheinander in das Array eingeben, sortieren und in die neue Ausgabedatei schreiben?
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Soup {
public static void main(String[] args) throws IOException {
File dir = new File(".");
String source = dir.getCanonicalPath() + File.separator + "Code.txt";
String dest = dir.getCanonicalPath() + File.separator + "Dest.txt";
File fin = new File(source);
FileInputStream fis = new FileInputStream(fin);
BufferedReader in = new BufferedReader(new InputStreamReader(fis));
FileWriter fstream = new FileWriter(dest, true);
BufferedWriter out = new BufferedWriter(fstream);
String aLine = null;
while ((aLine = in.readLine()) != null) {
//Process each line and add output to Dest.txt file
//Arrays.sort(aLine);
String[] strings = aLine.split(",");
int[] numbers = new int[strings.length];
for (int i=0; i < numbers.length; i++)
{
numbers[i] = Integer.parseInt(strings[i]);
}
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers));
//for(int k=0; k < numbers.length; k++)
//out.writeObject(numbers[k]);
//out.write(aLine);
out.write(Arrays.toString(numbers));
//out.write(numbers
//out.write((numbers));
out.newLine();
}
// do not forget to close the buffer reader
in.close();
// close buffer writer
out.close();
und was ist Ihre Frage? Das Erstellen einer eigenen Klasse zum Sortieren ändert die Effizienz nicht. Wenn Geschwindigkeit Ihnen am Herzen liegt und Sie immer fünf Zahlen kennen, können Sie das int [5] Array verwenden, anstatt es jedes Mal neu zu erstellen. –