Ich habe ein Java-Programm geschrieben, aus einer TXT-Datei Zeile für Zeile zu lesen, einen bestimmten Wert in einer Zeile zu finden, bearbeiten Sie es und schreiben Sie alle Zeilen in eine neue Datei. z:Java Heap Space Programm Leistung
Input:
4563,9876,abc545
Output:
4563,9876_1,abc545
ich das Programm von meiner Eingabeaufforderung ausgeführt wird, und ich bin in der Lage 1 Million Datensätze zu behandeln. Aber wenn ich ein bisschen mehr behandle, bekomme ich den untenstehenden Fehler:
Ich habe versucht, es zu sortieren, aber ohne Erfolg. Unten finden Sie meine Java-Klasse. Kann ich einige Vorschläge dazu erhalten, wie ich meinen Code verbessern kann, um mehr Datensätze zu bearbeiten?
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;
class RecordTreatment {
public static void main(String args[]) throws IOException
{
// Open the file
File file = new File("C:\\Users\\tolen\\Desktop\\test.txt");
FileInputStream fstream = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
StringBuilder fileContent = new StringBuilder();
String strLine;
int counter=1;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
String tokens[] = strLine.split(",");
if (tokens.length > 0) {
String tokens1[] = tokens[16].split("\"");
tokens[16] ="\""+tokens1[1] + "_"+counter+++"\"";
for (int i = 0; i < tokens.length; i++) {
if (tokens[i].equals(tokens[tokens.length-1])) {
fileContent.append(tokens[i]);
}else{
fileContent.append(tokens[i]+",");
}
}
fileContent.append("\n");
}
}
FileWriter fstreamWrite = new FileWriter("C:\\Users\\tolen\\Desktop\\test1.txt");
BufferedWriter out = new BufferedWriter(fstreamWrite);
out.write(fileContent.toString());
out.close();
//Close the input stream
br.close();
}
}
Können Sie mir bitte Ihre Änderung erklären? –
@JohnDoe Sicher, aber zuerst bitte löschen Sie, wenn Sie ** eine Zeile ersetzen wollen oder ** extrahieren ** dann eine Zeile ersetzen. – Ben
Ich möchte nur einen Wert in jeder Zeile bearbeiten/ersetzen –