简体   繁体   English

如何使用Java从多个csv文件输入数据

[英]How to input the data from multiple csv files using java

I have some CSV file with the same column header. 我有一些具有相同列标题的CSV文件。 I want to make them to one file.So I found something similar to me. 我想将它们保存到一个文件中。所以我找到了类似的东西。 Link is Merge CSV files into a single file with no repeated headers . 链接是将CSV文件合并到一个没有重复标题的文件中 but I want to return the data as a String, but this code has no return. 但是我想以字符串形式返回数据,但是此代码没有返回值。 I try to modify that. 我尝试修改它。 but I failed. 但我失败了 I want to put the data from several csv into one variable. 我想将来自多个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();

Here is what you might be looking for. 这是您可能正在寻找的。 I have read two csv files and written into one. 我已经阅读了两个csv文件并写入了一个。 Hope this is use full... 希望这可以用完...

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

Or if you looking for a function which returns String combining two csv 或者,如果您正在寻找一个函数,该函数返回结合两个csv的String

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

Thank you!!!! 谢谢!!!! Enjoy Coding... 享受编码...

另一种选择是使用Open CSV库

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM