如何读取、验证和移动 .csv 文件?

How to read, validate and move a .csv file?

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

首先,将文件保存为 .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;
}

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

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

第 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

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