如何阅读,验证和移动.csv文件?

时间:2017-05-25 03:21:15

标签: java csv file-handling

我是Java的新手,我遇到了一个我无能为力的情况。我需要从文件夹中取出所有csv文件,逐个读取它们,例如验证它们。有姓名,年龄,电子邮件等数据。所以名称应该只有字母,年龄应该是数字,电子邮件应该是有效的电子邮件格式。在任何一行中都有无效数据的文件,不应该对该特定csv文件进行任何进一步处理,它应该被移动到另一个文件夹,该文件夹将有错误的csv文件,程序将移动到文件夹中的下一个csv直到所有这些都被检查,验证和移动。 我不知道如何开始这个。请帮帮我们。

2 个答案:

答案 0 :(得分:2)

好的,让我们将这个问题分成以下四个较小的主题:

  1. Java程序读取文件夹,结果是文件列表
  2. Java程序读取文件,结果是行列表
  3. 解析一行的Java程序,获取列列表
  4. 对于姓名,年龄,电子邮件,验证数据
  5. 步骤1:Java程序读取文件夹,结果是文件列表

    假设你在java程序的顶部有下面

    import java.io.*;
    import java.util.*;
    

    下面的代码应该获取文件夹中的文件列表

    File f = new File(folder);
    File[] fileList = f.listFiles();
    

    第2步:Java程序读取文件,结果是行列表

    String line;
    BufferedReader br = new BufferedReader(new FileReader(path));
    while ((line = br.readLine()) != null) {
      String l = line.trim(); // Remove end of line. You can print line here.
    }
    br.close();
    

    步骤3:解析一行的Java程序,获取一列列

    String[] columns = l.split(",");  // separate line by comma
    for( int i=0; i<columns.length; i++ )
    {
        System.out.println(columns[i].trim());// remove space after comma
    }
    

    第4步:验证,例如年龄 年龄必须是整数,因此将其解析为整数

    int age = Integer.parseInt(columns[3].trim());//assuming age at column #3
    

    看到另一个答案出来。该答案没有文件夹到文件循环。 希望这可以帮助。

答案 1 :(得分:1)

首先,将文件保存为.csv format1。这适用于Excel工作表。然后通过此代码在main()中调用此函数,您将逐行读取.csv文件,每个单元格一次。

试试这个:

public List<HashMap<String, Object>> convertCSVRecordToList() {

    String csvFile = "your_file_name.csv";
    BufferedReader br = null;
    String line = "";
    String cvsSplitBy = ",";
    HashMap<String, Object> Map = new HashMap<String, Object>();

    List<HashMap<String, Object>> MapList = new ArrayList<HashMap<String, Object>>();

    try {

        br = new BufferedReader(new FileReader(csvFile));

        while ((line = br.readLine()) != null) {

            System.out.println(line);

            String[] data = line.split(cvsSplitBy);         

            Map.put("filed_name", data[3]);
            Map.put("field_name", data[0]);
            Map.put("field_name", data[2]);
            Map.put("fiels_name", data[1]);

            MapList.add(Map);
            Map = new HashMap<String, Object>();                
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
     catch (IOException e) {
        e.printStackTrace();
    }

    return MapList;
}