如何读取、验证和移动 .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;
}
好的,让我们将这个问题分成以下四个较小的主题:
- Java程序读取文件夹,结果是文件列表
- Java程序读取一个文件,结果是一个行列表
- Java程序解析一行,获取列列表
- 对于姓名、年龄、电子邮件,验证数据
第 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
看到另一个答案出来了。该答案没有文件夹到文件循环。
希望这可以帮助。
我是 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;
}
好的,让我们将这个问题分成以下四个较小的主题:
- Java程序读取文件夹,结果是文件列表
- Java程序读取一个文件,结果是一个行列表
- Java程序解析一行,获取列列表
- 对于姓名、年龄、电子邮件,验证数据
第 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
看到另一个答案出来了。该答案没有文件夹到文件循环。 希望这可以帮助。