2017-04-05 1 views
0

30 일 동안 특정 주식의 실적을보고 있습니다. 나는 CSV 파일로 나타나는 Yahoo finance에서 데이터를 다운로드했다. 내 데이터 집합에 새 열을 만들어 열고 refer to column H as where the output should appear을 사용하여 열림과 닫음 간의 일일 비율 변경을 표시하려면 어떻게해야합니까?java로 새 CSV 파일을 만들어 새 열을 추가하십시오.

미리 감사드립니다.

+0

"CSV 파일을 어떻게 작성합니까?" –

답변

0

: http://opencsv.sourceforge.net/

public class OpenCSVTest { 

    public static void main(String[] args) { 

     StringWriter target = new StringWriter(); 

     try(CSVReader reader = new CSVReader(new StringReader("my,test")); 
      CSVWriter writer = new CSVWriter(target);) { 
      for(String[] line : reader) { 
       String[] added = Arrays.copyOf(line, line.length + 1); 
       added[added.length-1] = "addition"; 
       writer.writeNext(added); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


     System.out.println(target.toString()); 
    } 
} 

당신은 대체 할 수 StringReader하고 입력 및 출력 StringWriter. 그러면 독자가 CSV의 각 행을 반복하여 읽습니다. 원본 줄을 복사하고 새 열을 추가하여 대상에 쓸 수 있습니다. 코드의

고장 :

try(CSVReader reader = new CSVReader(new StringReader("my,test")); 
      CSVWriter writer = new CSVWriter(target);) { ... } 

이 시도 -과 - 자원 블록입니다. 그것은 완료 후 리더와 작가가 닫혀 있는지 확인합니다.

for(String[] line : reader) { 
    String[] added = Arrays.copyOf(line, line.length + 1); 
    added[added.length-1] = "addition"; 
    writer.writeNext(added); 
} 

이것은 루프의 표준입니다. CSVReader는 Iterable 인터페이스를 구현하여 for 루프에서 직접 사용할 수 있습니다.

Arrays.copyOf(line, line.length + 1);은 전달 된 배열의 복사본을 새 크기로 만드는 함수입니다. 열을 추가하려고하므로 원래 배열 my,test의 복사본을 만들고 그 끝에 더 많은 공백을 하나 추가하면 다음과 같이 새 값을 할당 할 수 있습니다.

마지막으로, 이 값을 작성자에게 전달하면 대상에 값 (이 경우 StringWriter)이 제대로 기록됩니다.

+0

안녕하세요, 시도 및 포착 사이의 부분이 무엇인지 설명해 주시겠습니까? 미안 Java의 매우 기본적인 이해가 – avajhelp

+0

@ javjhelp 내가 자세한 설명을 추가했습니다. 뭔가 명확하지 않은 경우 알려주세요. – pandaadb

관련 문제