필자는 Java 프로그램을 작성하여 한 줄씩 txt 파일을 읽고 한 줄에 특정 값을 찾아 편집하고 모든 파일을 새 파일에 기록합니다. 예컨대 :자바 힙 공간 프로그램 성능
Input:
4563,9876,abc545
Output:
4563,9876_1,abc545
내 명령 프롬프트에서 프로그램을 실행하고, 나는 100 만 개 기록을 치료할 수 있어요. 그러나 조금 더 치료하면 아래 오류가 발생합니다.
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();
}
}
수정 사항을 설명해 주시겠습니까? –
@ 존도 물론,하지만 먼저 ** 라인을 교체하거나 ** 추출하고 ** 라인을 대체하고 싶다면 먼저 확인하십시오. – Ben
각 줄의 값만 편집/바꾸기를 원합니다. –