逗号分隔值(CSV)文件只是一个普通的纯文本文件,将数据逐列存储,并用分隔符(例如,通常是逗号“,”)分隔。
null
OpenCSV是一个用于Java的CSV解析器库。OpenCSV支持您想要执行的所有基本CSV类型操作。Java 7目前是OpenCSV支持的最低版本。Java语言不提供任何本机支持来有效地处理CSV文件,所以我们使用OpenCSV来处理Java中的CSV文件。
如何在项目中添加OpenCSV?
< dependency > < groupId >com.opencsv</ groupId > < artifactId >opencsv</ artifactId > < version >4.1</ version > </ dependency > |
compile group: 'com.opencsv', name: 'opencsv', version: '4.1'
- 编写CSV文件和读取一样简单。通过将FileWriter对象作为参数传递来创建CSVWriter的实例,并开始使用CSVWriter类的方法将数据写入CSV文件。在写入数据之后,我们需要通过调用CSVWriter类的close()方法来关闭CSVWriter连接。
- 逐行写入数据–CSVWriter可以使用writeNext()方法逐行写入数据,其中字符串数组与每个逗号分隔的元素一起作为单独的条目传递。 代码:
public
static
void
writeDataLineByLine(String filePath)
{
// first create file object for file placed at location
// specified by filepath
File file =
new
File(filePath);
try
{
// create FileWriter object with file as parameter
FileWriter outputfile =
new
FileWriter(file);
// create CSVWriter object filewriter object as parameter
CSVWriter writer =
new
CSVWriter(outputfile);
// adding header to csv
String[] header = {
"Name"
,
"Class"
,
"Marks"
};
writer.writeNext(header);
// add data to csv
String[] data1 = {
"Aman"
,
"10"
,
"620"
};
writer.writeNext(data1);
String[] data2 = {
"Suraj"
,
"10"
,
"630"
};
writer.writeNext(data2);
// closing writer connection
writer.close();
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出: 后果包含以下数据的csv文件
"Name", "Class", "Marks" "Aman", "10", "620" "Suraj", "10", "630"
- 一次写入所有数据——为了一次写入数据,请调用CSVWriter类的writeAll()方法,并传递字符串[]列表作为参数,每个字符串[]表示文件的一行。 代码:
public
static
void
writeDataAtOnce(String filePath)
{
// first create file object for file placed at location
// specified by filepath
File file =
new
File(filePath);
try
{
// create FileWriter object with file as parameter
FileWriter outputfile =
new
FileWriter(file);
// create CSVWriter object filewriter object as parameter
CSVWriter writer =
new
CSVWriter(outputfile);
// create a List which contains String array
List<String[]> data =
new
ArrayList<String[]>();
data.add(
new
String[] {
"Name"
,
"Class"
,
"Marks"
});
data.add(
new
String[] {
"Aman"
,
"10"
,
"620"
});
data.add(
new
String[] {
"Suraj"
,
"10"
,
"630"
});
writer.writeAll(data);
// closing writer connection
writer.close();
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出: 后果包含以下数据的csv文件
"Name", "Class", "Marks" "Aman", "10", "620" "Suraj", "10", "630"
Syntax : CSVWriter(Writer writer, char separator, char quotechar, char escapechar, String lineEnd) Description : Constructs CSVWriter with supplied separator, quote char, escape char and line ending.
代码:
public static void writeDataForCustomSeparatorCSV(String filePath) { // first create file object for file placed at location // specified by filepath File file = new File(filePath); try { // create FileWriter object with file as parameter FileWriter outputfile = new FileWriter(file); // create CSVWriter with '|' as separator CSVWriter writer = new CSVWriter(outputfile, '|' , CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.DEFAULT_ESCAPE_CHARACTER, CSVWriter.DEFAULT_LINE_END); // create a List which contains String array List<String[]> data = new ArrayList<String[]>(); data.add( new String[] { "Name" , "Class" , "Marks" }); data.add( new String[] { "Aman" , "10" , "620" }); data.add( new String[] { "Suraj" , "10" , "630" }); writer.writeAll(data); // closing writer connection writer.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } |
输出: 后果包含以下数据的csv文件
Name|Class|Marks Aman|10|620 Suraj|10|630
例子: 让我们创建一个java程序,它生成一个分号分隔的csv文件,并包含作为输入提供的数据。
Input: Enter no of rows 9 Enter Data Name Class Marks Aman 10 543 Amar 10 541 Sanjeet 10 555 Luv 10 580 Ranjeet 10 512 Rabi 10 540 Dev 10 333 Sunny 10 198
代码:
// Java program to illustrate // for Writing Data in CSV file import java.io.*; import java.util.*; import com.opencsv.CSVWriter; public class ResultGenerator { private static final String CSV_FILE_PATH = "./result.csv" ; public static void main(String[] args) { addDataToCSV(CSV_FILE_PATH); } public static void addDataToCSV(String output) { // first create file object for file placed at location // specified by filepath File file = new File(output); Scanner sc = new Scanner(System.in); try { // create FileWriter object with file as parameter FileWriter outputfile = new FileWriter(file); // create CSVWriter with ';' as separator CSVWriter writer = new CSVWriter(outputfile, ';' , CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.DEFAULT_ESCAPE_CHARACTER, CSVWriter.DEFAULT_LINE_END); // create a List which contains Data List<String[]> data = new ArrayList<String[]>(); System.out.println( "Enter no of rows" ); int noOfRow = Integer.parseInt(sc.nextLine()); System.out.println( "Enter Data" ); for ( int i = 0 ; i < noOfRow; i++) { String row = sc.nextLine(); String[] rowdata = row.split( " " ); data.add(rowdata); } writer.writeAll(data); // closing writer connection writer.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
输出: 后果包含以下数据的csv文件
Name;Class;Marks Aman;10;543 Amar;10;541 Sanjeet;10;555 Luv;10;580 Ranjeet;10;512 Rabi;10;540 Dev;10;333 Sunny;10;198
在未来的文章中,我们将使用OpenCSV对CSV文件进行更多操作。 参考: OpenCSV文档 , CSVWriter类文档
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END