2016-12-01 93 views
0

我有一些具有相同列標題的CSV文件。 我想讓他們成爲一個文件。所以我找到了和我相似的東西。鏈接是Merge CSV files into a single file with no repeated headers。 但我想返回數據作爲字符串,但此代碼沒有任何回報。 我嘗試修改它。但我失敗了。 我想將來自幾個csv的數據放入一個變量中。如何使用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

只需更換該代碼是寫'BufferedWriter'的東西,追加到一個'StringBuilder'部分。然後在最後返回StringBuilder的'toString()'值。除非我誤解了困難,否則這是非常基本的Java編程。 –

+0

csv文件與txt文件相同,只需使用BufferedReader readLine並將結果字符串寫入一個文件即可。 – passion

回答

0

以下是您可能正在尋找的內容。 我已經閱讀了兩個csv文件並寫入其中。 希望這是使用全...

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();  
     } 
    } 

或者,如果你在尋找它返回字符串組合兩個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的輸入文件... –

相關問題