2016-12-01 9 views
0

同じ列ヘッダーを持つCSVファイルがあります。 私はそれらを1つのファイルにしたいと思います。私は私のようなものを見つけました。リンクはMerge CSV files into a single file with no repeated headersです。 しかし、私は文字列としてデータを返すが、このコードは返されません。 私はそれを修正しようとします。私は失敗しました。 複数のcsvからのデータを1つの変数に入れたいと思います。javaを使用して複数のcsvファイルからデータを入力する方法

String[] headers = null; 
String firstFile = "/path/to/firstFile.dat"; 
Scanner scanner = new Scanner(new File(firstFile)); 

if (scanner.hasNextLine()) 
    headers[] = scanner.nextLine().split(","); 

scanner.close(); 

Iterator<File> iterFiles = listOfFilesToBeMerged.iterator(); 
BufferedWriter writer = new BufferedWriter(new FileWriter(firstFile, true)); 

while (iterFiles.hasNext()) { 
    File nextFile = iterFiles.next(); 
    BufferedReader reader = new BufferedReader(new FileReader(nextFile)); 

    String line = null; 
    String[] firstLine = null; 
    if ((line = reader.readLine()) != null) 
    firstLine = line.split(","); 

    if (!Arrays.equals (headers, firstLine)) 
    throw new FileMergeException("Header mis-match between CSV files: '" + 
       firstFile + "' and '" + nextFile.getAbsolutePath()); 

    while ((line = reader.readLine()) != null) { 
    writer.write(line); 
    writer.newLine(); 
    } 

    reader.close(); 
} 
writer.close(); 
+0

Open CSV libraryを使用することです。最後に 'StringBuilder'の' toString() 'の値を返します。難易度を誤解しない限り、これは実際には非常に基本的なJavaプログラミングです。 –

+0

csvファイルはtxtファイルと同じですが、BufferedReaderのreadLineを使用し、result Stringを1つのファイルに書き込みます。 – passion

答えて

0

これはあなたのお探しのものです。 私は2つのcsvファイルを読み込んで1つに書きました。 希望これは

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.ArrayList; 

public class CombineTwoFile 
{ 
     public static void main(String[] args) throws IOException 
     {  
     ArrayList<String> list = new ArrayList<String>(); 
     try 
     { 
     BufferedReader br = new BufferedReader(new FileReader("d:\\1\\1.csv")); 
     BufferedReader r = new BufferedReader(new FileReader("d:\\1\\2.csv")); 
      String s1 =null; 
      String s2 = null; 

         while ((s1 = br.readLine()) != null) 
         {       
             list.add(s1);   
         } 
         while((s2 = r.readLine()) != null) 
         {  
             list.add(s2);  
         } 
     } 
     catch (IOException e) 
      { 
      e.printStackTrace(); 
      } 

      BufferedWriter writer=null; 
      writer = new BufferedWriter(new FileWriter("d:\\1\\good.csv")); 
      String listWord;    
        for (int i = 0; i< list.size(); i++) 
        { 
         listWord = list.get(i); 
         writer.write(listWord); 
         writer.write("\n"); 
        } 
          System.out.println("DONE Enjoy!!"); 
          writer.close();  
     } 
    } 

それとも、2つのCSV

public static String combineCSV() { 
     ArrayList<String> list = new ArrayList<String>(); 
     try { 
      BufferedReader br = new BufferedReader(new FileReader(
        "d:\\1\\1.csv")); 
      BufferedReader r = new BufferedReader(
        new FileReader("d:\\1\\2.csv")); 
      String s1 = null; 
      String s2 = null; 

      while ((s1 = br.readLine()) != null) { 
       list.add(s1); 
      } 
      while ((s2 = r.readLine()) != null) { 
       list.add(s2); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     String listWord; 
     StringBuffer objBuffer = new StringBuffer(); 
     for (int i = 0; i < list.size(); i++) { 
      listWord = list.get(i); 

      objBuffer.append(listWord); 
      objBuffer.append("\n"); 

     } 
     System.out.println("DONE Enjoy!!"); 
     System.out.println(objBuffer); 
     return objBuffer.toString(); 
    } 

を組み合わせた文字列を返す関数を探している場合は、ありがとう...完全な使用です!!!! お楽しみコーディング...

+0

複数のcsvの入力ファイルを反復することができます... –

0

別の方法としては、単に `StringBuilder`に追加する何かを` BufferedWriter`に書き込むそのコードの部品を交換

関連する問題