有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何读取、验证和移动数据。csv文件?

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


共 (2) 个答案

  1. # 1 楼答案

    首先,将文件保存到.csvformat1。这适用于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;
    }
    
  2. # 2 楼答案

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

    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
    

    看到另一个答案了吗。这个答案没有文件夹到文件的循环。 希望这有帮助