读入每一行的每一列值,并只写出所需的列,同时跳过不需要的列值。
使用Apache Commons CSV库的示例应用程序
这是一个示例应用程序,演示了使用Apache Commons CSV读取输入文件,然后写入输出文件,跳过不需要的列值。
请注意使用 try-with-resources 语法来自动关闭我们的文件读取器和写入器对象。请参阅Oracle 教程。
RFC 4180是指定义逗号分隔值 (CSV)格式的书面标准。
制作一个名为input.csv
.
ID,name1,name2,name3
1,hello,hell,hel
2,try,tr,t
3,browser,ro,br
Java 应用程序。
package work.basil.example;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.commons.csv.CSVRecord;
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.InvalidPathException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class App
{
public static void main ( String[] args )
{
System.out.println ( "Hello World!" );
App app = new App ();
app.demo ();
}
private void demo ( )
{
try
{
// Read CSV file.
Path pathInput = Paths.get ( "/Users/basilbourque/input.csv" );
Path pathOutput = Paths.get ( "/Users/basilbourque/output.csv" );
try (
final BufferedReader reader = Files.newBufferedReader ( pathInput , StandardCharsets.UTF_8 ) ;
final CSVPrinter printer = CSVFormat.RFC4180.withHeader ( "ID" , "name1" , "name3" ).print ( pathOutput , StandardCharsets.UTF_8 ) ;
)
{
Iterable < CSVRecord > records = CSVFormat.RFC4180.withFirstRecordAsHeader ().parse ( reader );
// We expect these headers: ID,name1,name2,name3
for ( CSVRecord record : records )
{
// Read.
Integer id = Integer.valueOf ( record.get ( "ID" ) );
String name1 = record.get ( "name1" );
String name2 = record.get ( "name2" );
String name3 = record.get ( "name3" );
System.out.println ( "id: " + id + " | name1: " + name1 + " | name2: " + name2 + " | name3: " + name3 );
// Write.
printer.printRecord ( id , name1 , name3 );
}
}
} catch ( InvalidPathException e )
{
e.printStackTrace ();
} catch ( IOException e )
{
e.printStackTrace ();
}
}
}
控制台输出。
编号:1 | 姓名1:你好| name2:地狱 | 名称3:赫尔
编号:2 | 名称1:尝试| 名称2:tr | 名称3:t
编号:3 | name1: 浏览器 | name2: 罗 | 名称3:br
生成的文件名为output.csv
.
ID,name1,name3
1,hello,hel
2,try,t
3,browser,br