当前位置: 首页 > 知识库问答 >
问题:

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

颜实
2023-03-14

我有一些相同列标题的CSV文件。我想把它们做成一个文件。所以我找到了和我相似的东西。链接是将CSV文件合并到一个没有重复标题的文件中。但是我想以字符串的形式返回数据,但是这段代码没有返回。我试着修改一下。但我失败了。我想把来自多个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();

共有2个答案

诸葛康胜
2023-03-14

另一种选择是使用Open CSV库

汪胡非
2023-03-14

这是你可能要找的。我读了两个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();    
        }
    }

或者,如果您正在寻找一个返回String并结合两个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();
    }

非常感谢。享受编码。。。

 类似资料:
  • 问题内容: 我正在尝试创建一个程序,将所有数据从excel写入多个csv文件。 目前,我的程序创建了 n 个文件,并且只有excel的最后一行写入了最后一个csv文件。 编程背景观察: 似乎文件正在写入。但是对于每个写入的行,它都会以某种方式创建相同的文件250次。它将擦除最后写入的行。 使用 OutputStream 或 BufferedWriter 可能会遇到一些问题。我只是不知道那是什么。

  • 我正在使用html5输入标记来仅多选.csv文件。我到目前为止 多谢了。

  • 我目前正在用Java编写一个程序,其中我需要从用户那里获得输入,这是一段文本。然而,我需要用户能够在一次输入文本的多个段落。当程序提示输入时,只需粘贴整段文本就可以实现这一点。我对输入使用扫描器,当我将多个段落粘贴到输入中时,无论何时打印存储文本的变量,都不会抛出错误,只输出第一节(在第一个换行符之前)。如何使用多个换行符存储整段文本,而不提示用户为每个文本块输入单独的输入? 我已经有了一些代码,

  • 我想让我的Jmeter从一个位置读取多个csv文件,比如C:\Jmeter\file。 当前,如果我在csv数据集配置下的'filename'中提供特定的csv文件名,Jmeter会识别该文件并执行我的脚本。 我不想对文件名进行硬编码,我想让jmeter从该位置自动读取。 我已经编写了BeenShell预处理器(因为我找不到任何简单的解决方案),这个程序从位置读取所有csv文件列表,并将它们存储在

  • 我想在jmeter脚本中使用2个csv文件。一个包含应用程序URL、用户名和密码信息的文件。第二个csv有我测试的输入数据。 URL.csv包含应用程序URL数据(这可能是整个测试的1个URL)data . CSV包含id、名称等 我能够使用单个csv文件运行我的测试,但要求是使用单独的csv文件来配置元素,如URL,用户名,密码等,并将单独的csv文件用于测试的输入数据。请帮忙