Javaプログラムを作成して、行単位でtxtファイルを読み込み、行内の特定の値を見つけて編集し、すべての行を新しいファイルに書き込んでいます。 例えば:Javaヒープ・スペース・プログラムのパフォーマンス
Input:
4563,9876,abc545
Output:
4563,9876_1,abc545
私は、コマンドプロンプトからプログラムを実行している、と私は1万件のレコードを処理することができています。しかし、少しばかり扱うと、以下のエラーが表示されます。
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
私はそれを整理しようとしましたが、成功しませんでした。 以下は私のJavaクラスです。より多くのレコードを処理するためにコードを改善する方法についていくつかの提案がありますか?
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();
}
}
あなたの変更内容を教えていただけますか? –
@JohnDoe確かに、最初に**ラインを置き換えるか**抽出するか、**ラインを置き換えるかを明確にしてください。 – Ben
私は各行の値を編集/置き換えたいだけです。 –