2016-10-20 3 views
0

CSV 파일의 특정 행에 값을 추가하려고하지만 append'd 기본값은 csv 파일의 끝에 값을 추가하는 것입니다. . 특정 행의 끝에 추가하도록 지시하는 방법을 정확히 알지 못합니다. 내 코드는 다음과 같습니다 목표는 프로그램이 CSV 행 ID가 1. 현재의 결과와 같다 "성공"을 추가하는 것입니다기존 CSV 파일의 특정 행/셀에 데이터 추가/추가

try { 
     writer = new FileWriter(csvFile ,true); 
     br = new BufferedReader(new FileReader(csvFile)); 
     while ((line = br.readLine()) != null) { 

      // use comma as separator 
      String[] id = line.split(cvsSplitBy); 

      if(id[0].equals("1")){ 
       writer.append(","); 
       writer.append("Success"); 
       System.out.println("Done"); 
      } 
     } 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     if (br != null) { 
      try { 
       br.close(); 
       writer.flush(); 
       writer.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

것은 :

Id,Name,Sex,Age 
1,Nick,Male,23 
2,Dick,Male,25,Success 

것은 내가 좋아하는 것이 무엇 is :

Id,Name,Sex,Age 
1,Nick,Male,23,Success 
2,Dick,Male,25 

어떤 도움을 주실 수 있습니다. 감사.

+0

아마도 성공을 추가하면 작가를 플러시 할 것입니까? –

+0

나는 이것을 시도했지만 안타깝게도 작동하지 않는다. 문서 끝에 추가됩니다. – Chognificent

+1

나는 우리가 좀 더 나아갈 필요가 있다고 생각한다. 더 많은 코드를 게시 할 수 있습니까? – DivDiff

답변

1

줄 끝 부분에 추가하고 다음 줄을 그대로 둘 수는 없습니다. 텍스트 파일의 구조에 대해 생각해보십시오. 하나 함유 다음 줄 : W ",

"O ","N ","E ","\ n ","t "

one 
two 

이 파일은 다음의 문자가 포함 당신이 1 행의 끝에서 더 많은 문자를 추가 할 경우 행의 끝에 문자를 삽입 할 때 ","O ","\ n "이제

, 당신은, 2

따라서 라인을 덮어 쓰게됩니다 , 공간을 만들기 위해 나머지 파일을 이동해야합니다. 즉, 나머지 파일의 내용을 복사하고 "Success"문자열을 작성한 다음 저장된 문자를 다시 파일에 복사해야합니다.

그러나 append 플래그를 true로 설정하여 FileWriter를 만들고있는 중입니다. 즉, 모든 쓰기가 파일 끝에 추가됩니다. 추가하는 대신 수행해야하는 작업은 작성해야하는 위치를 표시하고 해당 위치에서 작성을 시작하는 것입니다. 아마도 가장 쉬운 클래스는 RandomAccessFile입니다.

0

CSV 행은 CRLF (또는 LF)로 끝나기 때문에 파일의 전체 내용을 문자열로 읽고 정규 표현식을 사용하여 CRLF를 successCRLF로 바꿀 수 있습니다. .

정규 표현식

이 같은 것입니다 :

1 * (\ 연구 \ 없음)

당신에게주는 \ 연구 \ n은 숫자 캡처 그룹으로.

도움이 되었으면

관련 문제