2016-12-22 8 views
0

데이터를 CSV 파일에 저장하려고합니다. 스캐너를 사용하여 CSVWriter를 저장합니다.CSVWriter가 파일에 쓸 수 없도록하십시오.

오류가 발생했습니다. 호환되지 않는 유형 : List [String]을 String []으로 변환 할 수 없습니다.

방법 :

private static void insertToFile(String source, String target) 
{ 
    List<String> data = new ArrayList<String>(); 
    try{ 
    Scanner sc = new Scanner(new File(source)); 

    while (sc.hasNextLine()) { 
     data.add(sc.nextLine()); 
    } 
    sc.close(); 
    } 
    catch(Exception e){ 
    e.printStackTrace(); 
    } 

     File resfile = new File(target);  

     try{ 
      CSVWriter writer = new CSVWriter(new FileWriter(resfile, true)); 

      //BufferedWriter bufferedWriter = new BufferedWriter(writer); 

      for (String j : data) { 
       //writer.writeAll(data);//error here 
      } 

       writer.close(); 
      } 
     catch(Exception e){ 
       e.printStackTrace(); 
     } 
    } 
+0

글쎄,'writeAll()'에 배열을 전달해야한다면, 직접리스트를 전달할 수 없다. 먼저 변환 해보십시오. 'writer.writeAll (data.toArray (new String []). – Thomas

+0

그럴 경우 for 루프가 필요하지 않습니다.'writer.writeAll (data.toArray (new String []))' – Babel

답변

1

문제는

writer.writeAll, 당신은 List<String>

변경

for (String j : data) { 
    //writer.writeAll(data);//error here 
} 

에 전달되는 입력으로 String[]을 받아 들일 것입니다

writer.writeAll(data.toArray(new String[data.size()]));이 문제를 해결합니다.

+0

고맙습니다 .Jobin! – 4est

0

대신을 시도해보십시오

private static void insertToFile(String source, String target) 
{ 
    List<String> data = new ArrayList<>(); 

    // utilize Scanner implementing AutoCloseable and try-with-resource construct 
    // see https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html) 
    try (Scanner sc = new Scanner(new File(source))) { 
     while (sc.hasNextLine()) { 
      data.add(sc.nextLine()); 
     } 
    } 
    catch (Exception e){ 
     e.printStackTrace(); 
    } 

    File resfile = new File(target); 

    try { 
     // depending on the CSVWriter implementation consider using try-with-resource as above 
     CSVWriter writer = new CSVWriter(new FileWriter(resfile, true)); 

     writer.writeAll(data.toArray(new String[data.size()])); 

     writer.close(); 
    } 
    catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

그것은 목록의 길이에 초기화 된 배열에 목록을 변환합니다. 또한 목록의 각 요소에 대해 전체 목록에 writeAll을 호출하는 것을 원하지 않을 것입니다. 그러면 목록을 파일에 여러 번 인쇄합니다.

0

간단한 방법으로 아래 코드를 사용할 수 있습니다. 코드에서 이러한 종속성을 가져옵니다 (import java.io.File, import java.io.FileWriter).

FileWriter writer = new FileWriter(new File(File_path)); 
writer.write(data); 
writer.close(); 
+0

writer.write (data)에 내가 오류 – 4est

+0

을 받았습니다. –

+0

resfile = new File (target) ..... 파일에서 시작하여 ..... 코드를 넣었습니다. 이제 오류가 발생했습니다. 적절한 방법을 찾지 못했습니다. write (List [String]) – 4est