我遇到了一个问题,想问是否有人能帮我。我有一个处理CSV文件的Java应用程序。这些文件有一个分号作为";分隔符";。现在我想用pipe"来代替分号|"作为";分隔符";。最好的方法是什么?
我已经在图书馆或课堂上告诉自己";org.apache.commons.csv.CSVRecord";。很遗憾在这里找不到任何东西。
我使用类FlatItemReaderBuilder解析Spring Batch。
您也可以在非Spring应用程序中使用SpringBatch类。
在这里你可以找到一个例子:
https://www.petrikainulainen.net/programming/spring-framework/spring-batch-tutorial-reading-information-from-a-file/
您可以使用Scanner或FileInputStream
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class ReadDelimited {
public static void main(String[] args) {
Scanner sc = null;
try {
sc = new Scanner(new File("D:\acct.csv"));
// Check if there is another line of input
while(sc.hasNextLine()){
String str = sc.nextLine();
// parse each line using delimiter
parseData(str);
}
} catch (IOException exp) {
// TODO Auto-generated catch block
exp.printStackTrace();
}finally{
if(sc != null)
sc.close();
}
}
private static void parseData(String str){
String acctFrom, acctTo, amount;
Scanner lineScanner = new Scanner(str);
lineScanner.useDelimiter("|");
while(lineScanner.hasNext()){
acctFrom = lineScanner.next();
acctTo = lineScanner.next();
amount = lineScanner.next();
System.out.println("Account From- " + acctFrom + " Account To- " + acctTo +
" Amount- " + amount);
}
lineScanner.close();
}
}
参考代码原始链接
或者,如果File不是太大,请读取字符串中的File。通过换行将其拆分为string数组,然后使用所选的分隔符(如下面的代码(进行将来的拆分。
public static void main(String[] args) throws IOException {
FileInputStream fileInputStream=new FileInputStream("j:\test.csv");
String s1=new String(fileInputStream.readAllBytes());
String[] lineArray=s1.split("n");
List<String[]> separatedValues=new ArrayList<>();
for (String line: lineArray) {
separatedValues.add(line.split("\|"));
}
for (String[] s: separatedValues) {
for (String s2:s ) {
System.out.print(s2+" ");
}
System.out.println("");
}
fileInputStream.close();
}
代码输出链路
原始CSV